node/deps/v8/test/mjsunit/compiler/rest-parameters.js
Ujjwal Sharma f579e11940 deps: update V8 to 7.4.288.13
PR-URL: https://github.com/nodejs/node/pull/26685
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
2019-03-28 16:36:18 -04:00

59 lines
1.3 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.
// Flags: --allow-natives-syntax
(function Rest0Params() {
function f(x, y) {
return x+y;
}
function test(...rest) {
return [rest, f.apply(null, rest)];
}
%PrepareFunctionForOptimization(test);
assertEquals(test(), [[], NaN]);
assertEquals(test(1), [[1], NaN])
assertEquals(test(1, 2), [[1,2], 3]);
assertEquals(test(1, 2, 3), [[1,2,3], 3]);
%OptimizeFunctionOnNextCall(test);
assertEquals(test(), [[], NaN]);
assertEquals(test(1), [[1], NaN])
assertEquals(test(1, 2), [[1,2], 3]);
assertEquals(test(1, 2, 3), [[1,2,3], 3]);
})();
(function Rest1Params() {
function f(x, y) {
return x+y
}
function test(a, ...rest) {
return [rest, a, f.apply(null, rest)];
}
%PrepareFunctionForOptimization(test);
assertEquals(test(), [[], undefined, NaN]);
assertEquals(test(1), [[], 1, NaN]);
assertEquals(test(1, 2), [[2], 1, NaN]);
assertEquals(test(1, 2, 3), [[2,3], 1, 5]);
assertEquals(test(1, 2, 3, 4), [[2,3,4], 1, 5]);
%OptimizeFunctionOnNextCall(test);
assertEquals(test(), [[], undefined, NaN]);
assertEquals(test(1), [[], 1, NaN]);
assertEquals(test(1, 2), [[2], 1, NaN]);
assertEquals(test(1, 2, 3), [[2,3], 1, 5]);
assertEquals(test(1, 2, 3, 4), [[2,3,4], 1, 5]);
})();