Files
Zachary D. Rowitsch 9e0bbe37fc
All checks were successful
ci / fast (linux) (push) Successful in 6m19s
Add Test262 integration (Phase A): function properties, harness, 50 real tests
Add function property support to the JS engine (fn.prop = val, fn.prop,
fn.method()) enabling the Test262 assert harness pattern. Implement Test262
execution mode in the JS262 harness with simplified sta.js/assert.js shims.
Vendor 50 real tc39/test262 tests via curation script (35 pass, 15 known_fail).

Engine changes:
- JsObject: add Debug impl and has() method for presence checks
- JsFunction: add properties field (Rc-shared JsObject)
- Interpreter: handle function property get/set/call/compound-assign/update
  with user-property-over-builtin precedence

Harness changes:
- Add Test262 variant to Js262Mode with relaxed manifest validation
- Implement run_test262_case with harness prepending and error classification
- Create sta.js (Test262Error shim) and assert.js (assert.sameValue etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 19:28:47 -05:00

30 lines
892 B
JavaScript

// Copyright (C) 2016 the V8 project authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
esid: sec-prepareforordinarycall
description: >
Removal of variable environment for the function parameters and body
info: |
[...]
3. Let callerContext be the running execution context.
[...]
8. Remove calleeContext from the execution context stack and restore
callerContext as the running execution context.
[...]
---*/
var probe;
// This test intentionally elides parameter expressions because their presence
// triggers the creation of an additional LexicalEnvironment dedicated to the
// function body (see sec-functiondeclarationinstantiation)
(function() {
var x = 'inside';
probe = function() { return x; };
}());
var x = 'outside';
assert.sameValue(probe(), 'inside');
assert.sameValue(x, 'outside');