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
(true).__proto__ and (1n).__proto__ return undefined instead of Boolean.prototype/BigInt.prototype — their dispatch never reaches Object.prototype's accessor table #10648
Found while fixing #10482 (PR #10647), which installed Object.prototype.__proto__ as a real accessor descriptor.
Confirmed pre-existing — that PR neither caused nor changed this.
Boolean and BigInt primitives return undefined for a dynamic .__proto__ read, where Node gives their
wrapper prototype.
Why Number/String work and these don't: PR #10647 fixed the recursive prototype-chain fallback in primitive_builtin_prototype_property (crates/perry-runtime/src/object/field_get_set/accessors.rs) to preserve
the original primitive receiver via accessor_receiver_override_begin/_end, so (5).__proto__ now correctly
resolves to Number.prototype instead of the intermediate Object.prototype. Boolean/BigInt never reach Object.prototype's accessor table at all — their dispatch takes a different route — so that fix does not apply
to them.
Start by finding where boolean and bigint property reads diverge from the number/string path; the fix is probably
routing them through the same fallback rather than adding a new mechanism.
Activity
fix(runtime): resolve Boolean and BigInt inherited accessors (#10648)
fix(runtime): resolve Boolean and BigInt inherited accessors (#10648)
fix(runtime): resolve Boolean and BigInt inherited accessors (#10648)