mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-03 07:54:40 +08:00
Reflect.has had no lowering. It is [[HasProperty]] — own and inherited names (Array.prototype's, Object.prototype's, a class's compiled methods), proxy `has` traps, symbol and property-key conversion — which is exactly the `in` operator's checked-dynamic probe, so it lowers to dyn.hasKeyComputed over the target's dyn view (and the target is fenced when it has no such view). A primitive target is Node's TypeError, which the probe answers false for instead: fenced by name, never silently divergent. Object.getOwnPropertyNames/Symbols/Descriptors only accepted values that already were checked-dynamic; a record, array or class instance now boxes into its own dyn view (own fields and elements, in property order) like the function and error targets already did. Corpus 8426 pins both against Node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>