summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/extensions/decompile-for-of.js
blob: b99e20a40bd369c0789ae59b6abc549074a158a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// The decompiler can handle the implicit call to @@iterator in a for-of loop.

var x;
function check(code, msg) {
    var s = "no exception thrown";
    try {
        eval(code);
    } catch (exc) {
        s = exc.message;
    }

    assertEq(s, msg);
}

x = {};
check("for (var v of x) throw fit;", "x is not iterable");
check("[...x]", "x is not iterable");
check("Math.hypot(...x)", "x is not iterable");

x[Symbol.iterator] = "potato";
check("for (var v of x) throw fit;", "x is not iterable");

x[Symbol.iterator] = {};
check("for (var v of x) throw fit;", "x[Symbol.iterator] is not a function");

if (typeof reportCompare === "function")
    reportCompare(0, 0, "ok");