[JSC] Do not use asArrayModes() with Structures because it discards TypedArray inform...
[WebKit-https.git] / JSTests / stress / finally-for-in.js
1 function repeat(count, thunk) {
2     let result = "";
3     for (let i = 0; i < count; i++)
4         result += thunk(i);
5     return result;
6 }
7
8 function createSimple(outerDepth, innerDepth, returnDepth) {
9     return Function(
10         `
11         return (function(arg) {
12             ${repeat(outerDepth, (i) => `for (let a${i} in arg) ` + "{\n" )}
13             try {
14                 ${repeat(innerDepth, (i) => `for (let b${i} in arg) ` + "{\n" )}
15                 return {};
16                 ${repeat(innerDepth, () => "}")}
17             }
18             finally { return a${returnDepth}}
19             ${repeat(outerDepth, () => "}")}
20         })
21         `
22     )();
23 }
24
25 function test(result, argument, ...args) {
26     let f = createSimple(...args);
27
28     let r = f(argument);
29     if (r !== result) {
30         throw new Error(r);
31     }
32 }
33
34
35 test("0", [1,2], 1, 1, 0);
36 test("0", [1,2], 2, 1, 0);
37 test("0", [1,2], 2, 4, 1);
38 test("0", [1,2], 1, 0, 0);