You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 7f3b703
Browse filesBrowse the repository at this point in the historyBrowse files
committed
impact: a private class field (Owner.#name) resolves under its # spelling
The resolver rewrote '#' to '.' for everything but methods, so Vault.#secret
became Vault..secret and #secret became secret: no spelling reached the field.
A '#' name is now looked up verbatim as a field before the rewrite.
JavaScript class fields were also indexed with no owner, so even a public
field's readers were only 'alongside' rows; the field now takes its class from
ownerTypeLinkHash (and its own id), as TypeScript's already do.
Golden cases for JS and TS, with controls: a private method, a public field,
and a same-named private field in another class.
Co-authored-by: axiomcode-bot[bot] <334110751+axiomcode-bot[bot]@users.noreply.github.com>
Co-Authored-By: Claude <noreply@anthropic.com>
ifnot (self.field_rows(base) orself.types(base, soft=True) orself.methods(base, soft=True)): base=base.replace('$', '.') # Outer$Inner — unless $ is part of the name ($Gson$Types)
{"why": "a private class field is written with its # (Vault.#secret): read as a member separator, the lookup asked for 'Vault..secret' and found nothing, though the field is in the graph under that very name",
4
+
"run": ["impact", "Vault.#secret"],
5
+
"want": ["change: field Vault.#secret", "Vault.reveal"],
{"why": "a private class field is written with its # (Vault.#secret): read as a member separator, the lookup asked for 'Vault..secret' and found nothing, though the field is in the graph under that very name",
4
+
"run": ["impact", "Vault.#secret"],
5
+
"want": ["change: field Vault.#secret", "Vault.reveal"],
0 commit comments