50 lines
1.6 KiB
JavaScript
50 lines
1.6 KiB
JavaScript
|
// Copyright 2017 the V8 project authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
x = "a";
|
||
|
|
||
|
function test_varargs(...args) {
|
||
|
var sum = this.x;
|
||
|
for (i in args) {
|
||
|
sum += "," + args[i];
|
||
|
}
|
||
|
return sum;
|
||
|
}
|
||
|
|
||
|
assertEquals("a", test_varargs());
|
||
|
assertEquals("a,b", test_varargs("b"));
|
||
|
assertEquals("a,b,c", test_varargs("b", "c"));
|
||
|
assertEquals("a,b,c,d", test_varargs("b", "c", "d"));
|
||
|
assertEquals("a,b,c,d,e", test_varargs("b", "c", "d", "e"));
|
||
|
|
||
|
function forward_varargs(...args) {
|
||
|
return test_varargs(...args);
|
||
|
}
|
||
|
|
||
|
assertEquals("a", forward_varargs());
|
||
|
assertEquals("a,b", forward_varargs("b"));
|
||
|
assertEquals("a,b,c", forward_varargs("b", "c"));
|
||
|
assertEquals("a,b,c,d", forward_varargs("b", "c", "d"));
|
||
|
assertEquals("a,b,c,d,e", forward_varargs("b", "c", "d", "e"));
|
||
|
|
||
|
function forward_varargs_one_arg(x, ...args) {
|
||
|
return test_varargs(x, ...args);
|
||
|
}
|
||
|
|
||
|
assertEquals("a,undefined", forward_varargs_one_arg());
|
||
|
assertEquals("a,b", forward_varargs_one_arg("b"));
|
||
|
assertEquals("a,b,c", forward_varargs_one_arg("b", "c"));
|
||
|
assertEquals("a,b,c,d", forward_varargs_one_arg("b", "c", "d"));
|
||
|
assertEquals("a,b,c,d,e", forward_varargs_one_arg("b", "c", "d", "e"));
|
||
|
|
||
|
function forward_varargs_two_args(x, y, ...args) {
|
||
|
return test_varargs(x, y, ...args);
|
||
|
}
|
||
|
|
||
|
assertEquals("a,undefined,undefined", forward_varargs_two_args());
|
||
|
assertEquals("a,b,undefined", forward_varargs_two_args("b"));
|
||
|
assertEquals("a,b,c", forward_varargs_two_args("b", "c"));
|
||
|
assertEquals("a,b,c,d", forward_varargs_two_args("b", "c", "d"));
|
||
|
assertEquals("a,b,c,d,e", forward_varargs_two_args("b", "c", "d", "e"));
|