diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js | |
parent | Initial commit. (diff) | |
download | firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js')
-rw-r--r-- | js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js b/js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js new file mode 100644 index 0000000000..9f4e4d7fe8 --- /dev/null +++ b/js/src/tests/non262/lexical-environment/block-scoped-functions-annex-b-eval.js @@ -0,0 +1,51 @@ +var log = ""; + +function f() { + log += g(); + function g() { return "outer-g"; } + + var o = { g: function () { return "with-g"; } }; + with (o) { + // Annex B.3.3.3 says g should be set on the nearest VariableEnvironment, + // and so should not change o.g. + eval(`{ + function g() { return "eval-g"; } + }`); + } + + log += g(); + log += o.g(); +} + +f(); + +function h() { + eval(` + // Should return true, as var bindings introduced by eval are configurable. + log += (delete q); + { + function q() { log += "q"; } + // Should return false, as lexical bindings introduced by eval are not + // configurable. + log += (delete q); + } + `); + return q; +} + +h()(); + +function f2() { + // Should not throw, just simply not synthesize an Annex B var in the eval + // because there's an outer const. + eval("{ function a() {} }"); + const a = 1; +} + +function f3() { + // As above, but for let. + eval("{ function a() {} }"); + let a; +} + +reportCompare(log, "outer-geval-gwith-gtruefalseq"); |