2a92ce8d6e79d43e0fda5524b7dfbf0f1f6bb8ba
[WebKit-https.git] / JSTests / stress / eval-func-decl-block-with-var-sinthesize.js
1 var assert = function (result, expected, message) {
2     if (result !== expected) {
3         throw new Error('Error in assert. Expected "' + expected + '" but was "' + result + '":' + message );
4     }
5 };
6
7 var assertThrow = function (cb, expected) {
8     let error = null;
9     try {
10         cb();
11     } catch(e) {
12         error = e;  
13     }
14     if (error === null) {
15         throw new Error('Error is expected. Expected "' + expected + '" but error was not thrown."');
16     }
17     if (error.toString() !== expected) {
18         throw new Error('Error is expected. Expected "' + expected + '" but error was "' + error + '"');
19     }
20 };
21
22 function foo() {
23     {   
24         assertThrow(() => f, "ReferenceError: Can't find variable: f");
25         eval('eval(" { function f() { }; } ")');
26         assert(typeof f, "function");
27     }
28     assert(typeof f, "function");
29 }
30
31 for (var i = 0; i < 10000; i++){
32     foo();
33     assertThrow(() => f, "ReferenceError: Can't find variable: f");
34 }
35
36 function boo() {
37     {
38         assertThrow(() => l, "ReferenceError: Can't find variable: l");
39         eval('{ var l = 15; eval(" { function l() { }; } ")}');
40         assert(typeof l, "function", "#3");
41     }
42     assert(typeof l, 'function', "#4");
43 }
44
45 for (var i = 0; i < 10000; i++){
46     boo();
47     assertThrow(() => l, "ReferenceError: Can't find variable: l");
48 }
49
50 function hoo() {
51     {
52         assertThrow(() => h, "ReferenceError: Can't find variable: h");
53         eval('eval(" if (false){ function h() { }; } ");');
54         assert(h, undefined, '');
55     }
56     assert(h, undefined, '');
57 }
58
59 for (var i = 0; i < 10000; i++){
60     hoo();
61     assertThrow(() => h, "ReferenceError: Can't find variable: h");
62 }
63
64 function joo() {
65     {
66         assertThrow(() => h, "ReferenceError: Can't find variable: h");
67         eval('eval(" if (true){ function h() { }; } ")');
68         assert(typeof h, "function" );
69     }
70     assert(typeof h, "function", "#10");
71 }
72
73 for (var i = 0; i < 10000; i++){
74     joo();
75     assertThrow(() => h, "ReferenceError: Can't find variable: h");
76 }
77
78 function koo() {
79     {
80         var k = 20;
81         eval('var k = 15; eval(" if (true){ function k() { }; } ")');
82         assert(typeof k, "function" );
83     }
84     assert(typeof k, "function", "#12");
85 }
86
87 for (var i = 0; i < 10000; i++){
88     koo();
89     assertThrow(() => k, "ReferenceError: Can't find variable: k");
90 }