summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/warp/rest-elements.js
blob: 28525ad215f87cf6a99cfcdb5cc71c4d61ca10ce (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
28
29
30
31
32
33
34
35
36
37
38
39
40
// |jit-test| --ion-inlining=off; --fast-warmup
function calleeWithFormals(a, b, ...arr) {
    assertEq(b, 2);
    if (arr.length > 0) {
        assertEq(arr[0], 3);
    }
    if (arr.length > 1) {
        assertEq(arr[1], Math);
    }
    if (arr.length > 2) {
        assertEq(arr[2], "foo");
    }
    return arr;
}
function calleeWithoutFormals(...arr) {
    if (arr.length > 0) {
        assertEq(arr[0], 3);
    }
    if (arr.length > 1) {
        assertEq(arr[1], Math);
    }
    if (arr.length > 2) {
        assertEq(arr[2], "foo");
    }
    return arr;
}
function f() {
    for (var i = 0; i < 100; i++) {
        assertEq(calleeWithFormals(1, 2).length, 0);
        assertEq(calleeWithFormals(1, 2, 3).length, 1);
        assertEq(calleeWithFormals(1, 2, 3, Math).length, 2);
        assertEq(calleeWithFormals(1, 2, 3, Math, "foo").length, 3);

        assertEq(calleeWithoutFormals().length, 0);
        assertEq(calleeWithoutFormals(3).length, 1);
        assertEq(calleeWithoutFormals(3, Math).length, 2);
        assertEq(calleeWithoutFormals(3, Math, "foo").length, 3);
    }
}
f();