diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-12 05:43:14 +0000 |
commit | 8dd16259287f58f9273002717ec4d27e97127719 (patch) | |
tree | 3863e62a53829a84037444beab3abd4ed9dfc7d0 /js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js | |
parent | Releasing progress-linux version 126.0.1-1~progress7.99u1. (diff) | |
download | firefox-8dd16259287f58f9273002717ec4d27e97127719.tar.xz firefox-8dd16259287f58f9273002717ec4d27e97127719.zip |
Merging upstream version 127.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js')
-rw-r--r-- | js/src/tests/test262/annexB/language/eval-code/direct/script-decl-lex-no-collision.js | 35 |
1 files changed, 35 insertions, 0 deletions
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); |