Summary
Computed key expressions are evaluated and converted in source order, including side effects from number/object key conversion.
Affected Test262 rows
Perry actual behavior from report
- 2 x runtime-fail: Uncaught exception: Actual [] and expected [0] should have the same contents. order set for key1
- 2 x runtime-fail: Uncaught exception: The value of
counter is 2 Expected SameValue(«0», «2») to be true
Node / ECMAScript expected behavior
Computed key expressions are evaluated and converted in source order, including side effects from number/object key conversion.
Likely subsystem
HIR evaluation ordering / ToPropertyKey runtime
Acceptance criteria
- The
to-name-side-effects rows record the same side-effect order as Node.
- Class and object literal paths share the same ToPropertyKey ordering semantics.
- No eager/dropped conversion skips side effects.
Validation
Run the Test262 differential against the affected area and confirm these rows leave the gap report:
scripts/test262_subset.py --root vendor/test262 --dir language/computed-property-names/to-name-side-effects --sample-cap 99999 --report /tmp/COMPUTED_KEY_EFFECTS.json
This is Perry language/runtime semantics triage, not a Node core API compatibility issue.
Summary
Computed key expressions are evaluated and converted in source order, including side effects from number/object key conversion.
Affected Test262 rows
counteris2Expected SameValue(«0», «2») to be true)counteris2Expected SameValue(«0», «2») to be true)Perry actual behavior from report
counteris2Expected SameValue(«0», «2») to be trueNode / ECMAScript expected behavior
Computed key expressions are evaluated and converted in source order, including side effects from number/object key conversion.
Likely subsystem
HIR evaluation ordering / ToPropertyKey runtime
Acceptance criteria
to-name-side-effectsrows record the same side-effect order as Node.Validation
Run the Test262 differential against the affected area and confirm these rows leave the gap report:
This is Perry language/runtime semantics triage, not a Node core API compatibility issue.