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 --- .../script-decl-lex-var-declared-via-eval.js | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 js/src/tests/test262/language/global-code/script-decl-lex-var-declared-via-eval.js (limited to 'js/src/tests/test262/language/global-code/script-decl-lex-var-declared-via-eval.js') diff --git a/js/src/tests/test262/language/global-code/script-decl-lex-var-declared-via-eval.js b/js/src/tests/test262/language/global-code/script-decl-lex-var-declared-via-eval.js new file mode 100644 index 0000000000..a92cca7b41 --- /dev/null +++ b/js/src/tests/test262/language/global-code/script-decl-lex-var-declared-via-eval.js @@ -0,0 +1,38 @@ +// 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('var test262Var;'); +eval('function test262Fn() {}'); + +$262.evalScript('let test262Var = 1;'); +assert.sameValue(test262Var, 1); + +$262.evalScript('const test262Fn = 2;'); +assert.sameValue(test262Fn, 2); + +reportCompare(0, 0); -- cgit v1.2.3