JSC incorrectly interpreting script, sets Global Property instead of Global Lexical...
[WebKit-https.git] / JSTests / stress / jsonp-program-evaluate-path-must-consider-global-lexical-environment.js
1 function assert(b) {
2     if (!b)
3         throw new Error("Bad");
4 }
5
6 disableRichSourceInfo(); // This is needed for the JSONP path to be taken for calls.
7
8 let a = 22;
9 loadString("a = 42");
10 assert(a === 42);
11
12 let b = {f: 22};
13 loadString("b.f = 42");
14 assert(b.f === 42);
15
16 let foo = null;
17 let bar = 42;
18 loadString("foo = 'root'; bar = 5")
19 assert(foo === "root");
20 assert(bar === 5);
21
22 let called = false;
23 let func = (a) => {
24     assert(a.foo === 20);
25     called = true;
26 };
27
28 loadString("func({foo:20})");
29 assert(called);
30
31 called = false;
32 let o = {
33     foo(arg) {
34         assert(arg.foo === 20);
35         called = true;
36     }
37 };
38
39 loadString("o.foo({foo:20})");
40 assert(called);
41
42 var theVar = 20;
43 loadString("theVar = 42");
44 assert(theVar === 42);
45 assert(this.theVar === 42);
46
47 called = false;
48 var varFunc = (a) => {
49     assert(a.foo === 20);
50     called = true;
51 };
52 loadString("varFunc({foo:20})");
53 assert(called);