From 8dd16259287f58f9273002717ec4d27e97127719 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 12 Jun 2024 07:43:14 +0200 Subject: Merging upstream version 127.0. Signed-off-by: Daniel Baumann --- .../direct/script-decl-lex-no-collision.js | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js (limited to 'js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js') diff --git a/js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js b/js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js new file mode 100644 index 0000000000..643b11831d --- /dev/null +++ b/js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js @@ -0,0 +1,35 @@ +// Copyright (C) 2023 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-globaldeclarationinstantiation +description: No let binding collision with existing var declaration due to eval(). +info: | + In strict mode: + + PerformEval ( x, strictCaller, direct ) + + [...] + 16. If direct is true, then + a. Let lexEnv be NewDeclarativeEnvironment(runningContext's LexicalEnvironment). + [...] + 18. If strictEval is true, set varEnv to lexEnv. + + In sloppy mode: + + GlobalDeclarationInstantiation ( script, env ) + + [...] + 3. For each element name of lexNames, do + a. If env.HasLexicalDeclaration(name) is true, throw a SyntaxError exception. + b. Let hasRestrictedGlobal be ? env.HasRestrictedGlobalProperty(name). + c. NOTE: Global var and function bindings (except those that are introduced by non-strict direct eval) are non-configurable and are therefore restricted global properties. + d. If hasRestrictedGlobal is true, throw a SyntaxError exception. +---*/ + +eval('if (true) { function test262Fn() {} }'); + +$262.evalScript('let test262Fn = 1;'); + +assert.sameValue(test262Fn, 1); + +reportCompare(0, 0); -- cgit v1.2.3