diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /js/src/jit-test/tests/cacheir/setgname-let.js | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
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; |