diff options
Diffstat (limited to 'js/src/jit-test/tests/warp/rest-elements.js')
-rw-r--r-- | js/src/jit-test/tests/warp/rest-elements.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/warp/rest-elements.js b/js/src/jit-test/tests/warp/rest-elements.js new file mode 100644 index 0000000000..28525ad215 --- /dev/null +++ b/js/src/jit-test/tests/warp/rest-elements.js @@ -0,0 +1,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(); |