summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/varargs.js
blob: ae636dc0f7b17a8846394e1e38aca91ad98c702e (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
41
42
43
44
45
46
47
48
49
// 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"));