Unreviewed, roll out r240220 due to date-format-xparb regression
[WebKit-https.git] / JSTests / stress / let-lexical-binding-shadow-existing-global-property-ftl.js
1 function shouldThrow(func, errorMessage) {
2     var errorThrown = false;
3     var error = null;
4     try {
5         func();
6     } catch (e) {
7         errorThrown = true;
8         error = e;
9     }
10     if (!errorThrown)
11         throw new Error('not thrown');
12     if (String(error) !== errorMessage)
13         throw new Error(`bad error: ${String(error)}`);
14 }
15 noInline(shouldThrow);
16
17 function shouldBe(actual, expected) {
18     if (actual !== expected)
19         throw new Error(`bad value: ${String(actual)}`);
20 }
21 noInline(shouldBe);
22
23 function foo() {
24     bar = 4;
25 }
26 function get() {
27     return bar;
28 }
29 for (var i = 0; i < 1e6; ++i)
30     foo();
31 for (var i = 0; i < 1e6; ++i)
32     shouldBe(get(), 4);
33
34 shouldBe(bar, 4);
35 $.evalScript('let bar = 3;');
36 shouldBe(bar, 3);
37 shouldBe(get(), 3);
38
39 for (var i = 0; i < 1e6; ++i)
40     shouldBe(get(), 3);
41
42 foo();
43 shouldBe(bar, 4);
44 shouldBe(get(), 4);
45
46 for (var i = 0; i < 1e6; ++i)
47     shouldBe(get(), 4);