diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /js/src/jit-test/tests/cacheir/setgname-let.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit-test/tests/cacheir/setgname-let.js')
-rw-r--r-- | js/src/jit-test/tests/cacheir/setgname-let.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/cacheir/setgname-let.js b/js/src/jit-test/tests/cacheir/setgname-let.js new file mode 100644 index 0000000000..92345fb0df --- /dev/null +++ b/js/src/jit-test/tests/cacheir/setgname-let.js @@ -0,0 +1,93 @@ +let x = 2; + +function simple() { + for (var i = 0; i < 10; i++) { + x = i; + assertEq(x, i); + } +} + +function setname() { + function set(obj, v) { + with (obj) { + x = v; + } + } + + set({}, 100) + assertEq(x, 100); + set({x: 1}, 0); + assertEq(x, 100); + set({__proto__: {x: 1}}, 13); + assertEq(x, 100); +} + + +function noshadow() { + for (var i = 0; i < 20; i++) { + x = i; + assertEq(x, i); + + if (i == 10) { + globalThis.x = "haha"; + assertEq(x, 10); + } + } +} + +function uninitialized() { + for (var i = 0; i < 20; i++) { + var threw = false; + try { + undef = 2; + } catch { + threw = true; + } + assertEq(threw, true); + } +} + +function simpleStrict() { + "use strict"; + for (var i = 0; i < 10; i++) { + x = i; + assertEq(x, i); + } +} + +// No with in strict! + +function noshadowStrict() { + "use strict"; + for (var i = 0; i < 20; i++) { + x = i; + assertEq(x, i); + + if (i == 10) { + globalThis.x = "haha"; + assertEq(x, 10); + } + } +} + +function uninitializedStrict() { + for (var i = 0; i < 20; i++) { + var threw = false; + try { + undef = 2; + } catch { + threw = true; + } + assertEq(threw, true); + } +} + +simple(); +setname(); +noshadow(); +uninitialized(); +simpleStrict(); +noshadowStrict(); +uninitializedStrict(); + +let undef = 42; |