Index: test/mjsunit/strong/function-arity.js |
diff --git a/test/mjsunit/strong/function-arity.js b/test/mjsunit/strong/function-arity.js |
deleted file mode 100644 |
index c045d0847c439d0d333742f9542221c7b2beb72f..0000000000000000000000000000000000000000 |
--- a/test/mjsunit/strong/function-arity.js |
+++ /dev/null |
@@ -1,339 +0,0 @@ |
-// Copyright 2015 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: --strong-mode --harmony-reflect |
-// Flags: --allow-natives-syntax |
- |
-'use strict'; |
- |
- |
-function generateArguments(n, prefix) { |
- let a = []; |
- if (prefix) { |
- a.push(prefix); |
- } |
- for (let i = 0; i < n; i++) { |
- a.push(String(i)); |
- } |
- |
- return a.join(', '); |
-} |
- |
- |
-function generateParams(n, directive_in_body) { |
- let a = []; |
- for (let i = 0; i < n; i++) { |
- a[i] = `p${i}`; |
- } |
- return a.join(', '); |
-} |
- |
-function generateParamsWithRest(n, directive_in_body) { |
- let a = []; |
- let i = 0; |
- for (; i < n; i++) { |
- a[i] = `p${i}`; |
- } |
- if (!directive_in_body) { |
- // If language mode directive occurs in body, rest parameters will trigger |
- // an early error regardless of language mode. |
- a.push(`...p${i}`); |
- } |
- return a.join(', '); |
-} |
- |
- |
-function generateSpread(n) { |
- return `...[${generateArguments(n)}]`; |
-} |
- |
- |
-(function FunctionCall() { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `'use strong'; function f(${generateParams(parameterCount)}) {}`, |
- `'use strong'; function f(${generateParamsWithRest(parameterCount)}) {}`, |
- `'use strong'; function* f(${generateParams(parameterCount)}) {}`, |
- `'use strong'; function* f(${generateParamsWithRest(parameterCount)}) {}`, |
- `'use strong'; let f = (${generateParams(parameterCount)}) => {}`, |
- `function f(${generateParams(parameterCount)}) { 'use strong'; }`, |
- `function* f(${generateParams(parameterCount)}) { 'use strong'; }`, |
- `let f = (${generateParams(parameterCount)}) => { 'use strong'; }`, |
- ]; |
- for (let def of defs) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- let calls = [ |
- `f(${generateArguments(argumentCount)})`, |
- `f(${generateSpread(argumentCount)})`, |
- `f.call(${generateArguments(argumentCount, 'undefined')})`, |
- `f.call(undefined, ${generateSpread(argumentCount)})`, |
- `f.apply(undefined, [${generateArguments(argumentCount)}])`, |
- `f.bind(undefined)(${generateArguments(argumentCount)})`, |
- `%_Call(f, ${generateArguments(argumentCount, 'undefined')})`, |
- `%Call(f, ${generateArguments(argumentCount, 'undefined')})`, |
- `Reflect.apply(f, undefined, [${generateArguments(argumentCount)}])`, |
- ]; |
- |
- for (let call of calls) { |
- let code = `'use strict'; ${def}; ${call};`; |
- if (argumentCount < parameterCount) { |
- print(code); |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- |
- let calls = [ |
- `f.call()`, |
- `f.apply()`, |
- `f.apply(undefined)`, |
- ]; |
- for (let call of calls) { |
- let code = `'use strict'; ${def}; ${call};`; |
- if (parameterCount > 0) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
-})(); |
- |
- |
-(function MethodCall() { |
- for (let genParams of [generateParams, generateParamsWithRest]) { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `let o = new class { |
- m(${genParams(parameterCount, true)}) { 'use strong'; } |
- }`, |
- `let o = new class { |
- *m(${genParams(parameterCount, true)}) { 'use strong'; } |
- }`, |
- `let o = { m(${genParams(parameterCount, true)}) { 'use strong'; } }`, |
- `let o = { *m(${genParams(parameterCount, true)}) { 'use strong'; } }`, |
- `'use strong'; |
- let o = new class { m(${genParams(parameterCount)}) {} }`, |
- `'use strong'; |
- let o = new class { *m(${genParams(parameterCount)}) {} }`, |
- `'use strong'; let o = { m(${genParams(parameterCount)}) {} }`, |
- `'use strong'; let o = { *m(${genParams(parameterCount)}) {} }`, |
- ]; |
- for (let def of defs) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- let calls = [ |
- `o.m(${generateArguments(argumentCount)})`, |
- `o.m(${generateSpread(argumentCount)})`, |
- `o.m.call(${generateArguments(argumentCount, 'o')})`, |
- `o.m.call(o, ${generateSpread(argumentCount)})`, |
- `o.m.apply(o, [${generateArguments(argumentCount)}])`, |
- `o.m.bind(o)(${generateArguments(argumentCount)})`, |
- `%_Call(o.m, ${generateArguments(argumentCount, 'o')})`, |
- `%Call(o.m, ${generateArguments(argumentCount, 'o')})`, |
- `Reflect.apply(o.m, o, [${generateArguments(argumentCount)}])`, |
- ]; |
- |
- for (let call of calls) { |
- let code = `'use strict'; ${def}; ${call};`; |
- if (argumentCount < parameterCount) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- |
- let calls = [ |
- `o.m.call()`, |
- `o.m.apply()`, |
- `o.m.apply(o)`, |
- ]; |
- for (let call of calls) { |
- let code = `'use strict'; ${def}; ${call};`; |
- if (parameterCount > 0) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
- } |
-})(); |
- |
- |
-(function Constructor() { |
- for (let genParams of [generateParams, generateParamsWithRest]) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `'use strong'; |
- class C { constructor(${genParams(parameterCount)}) {} }`, |
- ]; |
- for (let def of defs) { |
- let calls = [ |
- `new C(${generateArguments(argumentCount)})`, |
- `new C(${generateSpread(argumentCount)})`, |
- `Reflect.construct(C, [${generateArguments(argumentCount)}])`, |
- ]; |
- for (let call of calls) { |
- let code = `${def}; ${call};`; |
- if (argumentCount < parameterCount) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
- } |
- } |
-})(); |
- |
- |
-(function DerivedConstructor() { |
- for (let genParams of [generateParams, generateParamsWithRest]) { |
- for (let genArgs of [generateArguments, generateSpread]) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `'use strong'; |
- class B { |
- constructor(${genParams(parameterCount)}) {} |
- } |
- class C extends B { |
- constructor() { |
- super(${genArgs(argumentCount)}); |
- } |
- }`, |
- ]; |
- for (let def of defs) { |
- let code = `${def}; new C();`; |
- if (argumentCount < parameterCount) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
- } |
- } |
-})(); |
- |
- |
-(function DerivedConstructorDefaultConstructorInDerivedClass() { |
- for (let genParams of [generateParams, generateParamsWithRest]) { |
- for (let genArgs of [generateArguments, generateSpread]) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `'use strong'; |
- class B { |
- constructor(${genParams(parameterCount)}) {} |
- } |
- class C extends B {}`, |
- ]; |
- for (let def of defs) { |
- let code = `${def}; new C(${genArgs(argumentCount)})`; |
- if (argumentCount < parameterCount) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
- } |
- } |
-})(); |
- |
- |
-(function TestOptimized() { |
- function f(x, y) { 'use strong'; } |
- |
- assertThrows(f, TypeError); |
- %OptimizeFunctionOnNextCall(f); |
- assertThrows(f, TypeError); |
- |
- function g() { |
- f(1); |
- } |
- assertThrows(g, TypeError); |
- %OptimizeFunctionOnNextCall(g); |
- assertThrows(g, TypeError); |
- |
- f(1, 2); |
- %OptimizeFunctionOnNextCall(f); |
- f(1, 2); |
-})(); |
- |
- |
-(function TestOptimized2() { |
- 'use strong'; |
- function f(x, y) {} |
- |
- assertThrows(f, TypeError); |
- %OptimizeFunctionOnNextCall(f); |
- assertThrows(f, TypeError); |
- |
- function g() { |
- f(1); |
- } |
- assertThrows(g, TypeError); |
- %OptimizeFunctionOnNextCall(g); |
- assertThrows(g, TypeError); |
- |
- f(1, 2); |
- %OptimizeFunctionOnNextCall(f); |
- f(1, 2); |
-})(); |
- |
- |
-(function TestOptimized3() { |
- function f(x, y) {} |
- function g() { |
- 'use strong'; |
- f(1); |
- } |
- |
- g(); |
- %OptimizeFunctionOnNextCall(f); |
- g(); |
-})(); |
- |
- |
-(function ParametersSuper() { |
- for (let genArgs of [generateArguments, generateSpread]) { |
- for (let argumentCount = 0; argumentCount < 3; argumentCount++) { |
- for (let parameterCount = 0; parameterCount < 3; parameterCount++) { |
- let defs = [ |
- `'use strict'; |
- class B { |
- m(${generateParams(parameterCount)} ){ 'use strong' } |
- }`, |
- `'use strong'; class B { m(${generateParams(parameterCount)}) {} }`, |
- ]; |
- for (let def of defs) { |
- let code = `${def}; |
- class D extends B { |
- m() { |
- super.m(${genArgs(argumentCount)}); |
- } |
- } |
- new D().m()`; |
- print('\n\n' + code); |
- if (argumentCount < parameterCount) { |
- assertThrows(code, TypeError); |
- } else { |
- assertDoesNotThrow(code); |
- } |
- } |
- } |
- } |
- } |
-})(); |