From ec5c115cfa27373b7fe4f80b715fd2b51af51caa Mon Sep 17 00:00:00 2001 From: Yui T Date: Mon, 5 Jan 2015 13:33:44 -0800 Subject: [PATCH] Add tests covering emitting rest parameters natively in ES6 --- .../reference/emitRestParametersFunction.js | 17 ++++++ .../emitRestParametersFunction.types | 11 ++++ .../emitRestParametersFunctionES6.js | 9 +++ .../emitRestParametersFunctionES6.types | 11 ++++ .../emitRestParametersFunctionExpression.js | 32 ++++++++++ ...emitRestParametersFunctionExpression.types | 24 ++++++++ ...emitRestParametersFunctionExpressionES6.js | 15 +++++ ...tRestParametersFunctionExpressionES6.types | 24 ++++++++ .../emitRestParametersFunctionProperty.js | 19 ++++++ .../emitRestParametersFunctionProperty.types | 17 ++++++ .../emitRestParametersFunctionPropertyES6.js | 15 +++++ ...mitRestParametersFunctionPropertyES6.types | 17 ++++++ .../reference/emitRestParametersMethod.js | 58 +++++++++++++++++++ .../reference/emitRestParametersMethod.types | 33 +++++++++++ .../reference/emitRestParametersMethodES6.js | 35 +++++++++++ .../emitRestParametersMethodES6.types | 34 +++++++++++ .../emitRestParametersFunction.ts | 3 + .../emitRestParametersFunctionES6.ts | 3 + .../emitRestParametersFunctionExpression.ts | 5 ++ ...emitRestParametersFunctionExpressionES6.ts | 5 ++ .../emitRestParametersFunctionProperty.ts | 8 +++ .../emitRestParametersFunctionPropertyES6.ts | 8 +++ .../emitRestParametersMethod.ts | 14 +++++ .../emitRestParametersMethodES6.ts | 14 +++++ 24 files changed, 431 insertions(+) create mode 100644 tests/baselines/reference/emitRestParametersFunction.js create mode 100644 tests/baselines/reference/emitRestParametersFunction.types create mode 100644 tests/baselines/reference/emitRestParametersFunctionES6.js create mode 100644 tests/baselines/reference/emitRestParametersFunctionES6.types create mode 100644 tests/baselines/reference/emitRestParametersFunctionExpression.js create mode 100644 tests/baselines/reference/emitRestParametersFunctionExpression.types create mode 100644 tests/baselines/reference/emitRestParametersFunctionExpressionES6.js create mode 100644 tests/baselines/reference/emitRestParametersFunctionExpressionES6.types create mode 100644 tests/baselines/reference/emitRestParametersFunctionProperty.js create mode 100644 tests/baselines/reference/emitRestParametersFunctionProperty.types create mode 100644 tests/baselines/reference/emitRestParametersFunctionPropertyES6.js create mode 100644 tests/baselines/reference/emitRestParametersFunctionPropertyES6.types create mode 100644 tests/baselines/reference/emitRestParametersMethod.js create mode 100644 tests/baselines/reference/emitRestParametersMethod.types create mode 100644 tests/baselines/reference/emitRestParametersMethodES6.js create mode 100644 tests/baselines/reference/emitRestParametersMethodES6.types create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunction.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunctionES6.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpression.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpressionES6.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunctionProperty.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersFunctionPropertyES6.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersMethod.ts create mode 100644 tests/cases/conformance/es6/restParameters/emitRestParametersMethodES6.ts diff --git a/tests/baselines/reference/emitRestParametersFunction.js b/tests/baselines/reference/emitRestParametersFunction.js new file mode 100644 index 00000000000..01116f2ac92 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunction.js @@ -0,0 +1,17 @@ +//// [emitRestParametersFunction.ts] +function bar(...rest) { } +function foo(x: number, y: string, ...rest) { } + +//// [emitRestParametersFunction.js] +function bar() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +} +function foo(x, y) { + var rest = []; + for (var _i = 2; _i < arguments.length; _i++) { + rest[_i - 2] = arguments[_i]; + } +} diff --git a/tests/baselines/reference/emitRestParametersFunction.types b/tests/baselines/reference/emitRestParametersFunction.types new file mode 100644 index 00000000000..a65adb57702 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunction.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunction.ts === +function bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + +function foo(x: number, y: string, ...rest) { } +>foo : (x: number, y: string, ...rest: any[]) => void +>x : number +>y : string +>rest : any[] + diff --git a/tests/baselines/reference/emitRestParametersFunctionES6.js b/tests/baselines/reference/emitRestParametersFunctionES6.js new file mode 100644 index 00000000000..242c40f252d --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionES6.js @@ -0,0 +1,9 @@ +//// [emitRestParametersFunctionES6.ts] +function bar(...rest) { } +function foo(x: number, y: string, ...rest) { } + +//// [emitRestParametersFunctionES6.js] +function bar(...rest) { +} +function foo(x, y, ...rest) { +} diff --git a/tests/baselines/reference/emitRestParametersFunctionES6.types b/tests/baselines/reference/emitRestParametersFunctionES6.types new file mode 100644 index 00000000000..5689d64c4df --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionES6.types @@ -0,0 +1,11 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunctionES6.ts === +function bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + +function foo(x: number, y: string, ...rest) { } +>foo : (x: number, y: string, ...rest: any[]) => void +>x : number +>y : string +>rest : any[] + diff --git a/tests/baselines/reference/emitRestParametersFunctionExpression.js b/tests/baselines/reference/emitRestParametersFunctionExpression.js new file mode 100644 index 00000000000..da87cc79f2d --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionExpression.js @@ -0,0 +1,32 @@ +//// [emitRestParametersFunctionExpression.ts] +var funcExp = (...rest) => { } +var funcExp1 = (X: number, ...rest) => { } +var funcExp2 = function (...rest) { } +var funcExp3 = (function (...rest) { })() + + +//// [emitRestParametersFunctionExpression.js] +var funcExp = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var funcExp1 = function (X) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } +}; +var funcExp2 = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +}; +var funcExp3 = (function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } +})(); diff --git a/tests/baselines/reference/emitRestParametersFunctionExpression.types b/tests/baselines/reference/emitRestParametersFunctionExpression.types new file mode 100644 index 00000000000..9f08b9d9d83 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionExpression.types @@ -0,0 +1,24 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpression.ts === +var funcExp = (...rest) => { } +>funcExp : (...rest: any[]) => void +>(...rest) => { } : (...rest: any[]) => void +>rest : any[] + +var funcExp1 = (X: number, ...rest) => { } +>funcExp1 : (X: number, ...rest: any[]) => void +>(X: number, ...rest) => { } : (X: number, ...rest: any[]) => void +>X : number +>rest : any[] + +var funcExp2 = function (...rest) { } +>funcExp2 : (...rest: any[]) => void +>function (...rest) { } : (...rest: any[]) => void +>rest : any[] + +var funcExp3 = (function (...rest) { })() +>funcExp3 : void +>(function (...rest) { })() : void +>(function (...rest) { }) : (...rest: any[]) => void +>function (...rest) { } : (...rest: any[]) => void +>rest : any[] + diff --git a/tests/baselines/reference/emitRestParametersFunctionExpressionES6.js b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.js new file mode 100644 index 00000000000..6c79e4956ae --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.js @@ -0,0 +1,15 @@ +//// [emitRestParametersFunctionExpressionES6.ts] +var funcExp = (...rest) => { } +var funcExp1 = (X: number, ...rest) => { } +var funcExp2 = function (...rest) { } +var funcExp3 = (function (...rest) { })() + +//// [emitRestParametersFunctionExpressionES6.js] +var funcExp = function (...rest) { +}; +var funcExp1 = function (X, ...rest) { +}; +var funcExp2 = function (...rest) { +}; +var funcExp3 = (function (...rest) { +})(); diff --git a/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types new file mode 100644 index 00000000000..224cb37367a --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionExpressionES6.types @@ -0,0 +1,24 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpressionES6.ts === +var funcExp = (...rest) => { } +>funcExp : (...rest: any[]) => void +>(...rest) => { } : (...rest: any[]) => void +>rest : any[] + +var funcExp1 = (X: number, ...rest) => { } +>funcExp1 : (X: number, ...rest: any[]) => void +>(X: number, ...rest) => { } : (X: number, ...rest: any[]) => void +>X : number +>rest : any[] + +var funcExp2 = function (...rest) { } +>funcExp2 : (...rest: any[]) => void +>function (...rest) { } : (...rest: any[]) => void +>rest : any[] + +var funcExp3 = (function (...rest) { })() +>funcExp3 : void +>(function (...rest) { })() : void +>(function (...rest) { }) : (...rest: any[]) => void +>function (...rest) { } : (...rest: any[]) => void +>rest : any[] + diff --git a/tests/baselines/reference/emitRestParametersFunctionProperty.js b/tests/baselines/reference/emitRestParametersFunctionProperty.js new file mode 100644 index 00000000000..4fd60a9269d --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionProperty.js @@ -0,0 +1,19 @@ +//// [emitRestParametersFunctionProperty.ts] +var obj: { + func1: (...rest) => void +} + +var obj2 = { + func(...rest) { } +} + +//// [emitRestParametersFunctionProperty.js] +var obj; +var obj2 = { + func: function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + } +}; diff --git a/tests/baselines/reference/emitRestParametersFunctionProperty.types b/tests/baselines/reference/emitRestParametersFunctionProperty.types new file mode 100644 index 00000000000..8242e742ee0 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionProperty.types @@ -0,0 +1,17 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunctionProperty.ts === +var obj: { +>obj : { func1: (...rest: any[]) => void; } + + func1: (...rest) => void +>func1 : (...rest: any[]) => void +>rest : any[] +} + +var obj2 = { +>obj2 : { func(...rest: any[]): void; } +>{ func(...rest) { }} : { func(...rest: any[]): void; } + + func(...rest) { } +>func : (...rest: any[]) => void +>rest : any[] +} diff --git a/tests/baselines/reference/emitRestParametersFunctionPropertyES6.js b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.js new file mode 100644 index 00000000000..87aa489ecf3 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.js @@ -0,0 +1,15 @@ +//// [emitRestParametersFunctionPropertyES6.ts] +var obj: { + func1: (...rest) => void +} + +var obj2 = { + func(...rest) { } +} + +//// [emitRestParametersFunctionPropertyES6.js] +var obj; +var obj2 = { + func(...rest) { + } +}; diff --git a/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types new file mode 100644 index 00000000000..07a008cd4c0 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersFunctionPropertyES6.types @@ -0,0 +1,17 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersFunctionPropertyES6.ts === +var obj: { +>obj : { func1: (...rest: any[]) => void; } + + func1: (...rest) => void +>func1 : (...rest: any[]) => void +>rest : any[] +} + +var obj2 = { +>obj2 : { func(...rest: any[]): void; } +>{ func(...rest) { }} : { func(...rest: any[]): void; } + + func(...rest) { } +>func : (...rest: any[]) => void +>rest : any[] +} diff --git a/tests/baselines/reference/emitRestParametersMethod.js b/tests/baselines/reference/emitRestParametersMethod.js new file mode 100644 index 00000000000..5ceb6d768f8 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersMethod.js @@ -0,0 +1,58 @@ +//// [emitRestParametersMethod.ts] +class C { + constructor(name: string, ...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + +class D { + constructor(...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + +//// [emitRestParametersMethod.js] +var C = (function () { + function C(name) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + } + C.prototype.bar = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + }; + C.prototype.foo = function (x) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + }; + return C; +})(); +var D = (function () { + function D() { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + } + D.prototype.bar = function () { + var rest = []; + for (var _i = 0; _i < arguments.length; _i++) { + rest[_i - 0] = arguments[_i]; + } + }; + D.prototype.foo = function (x) { + var rest = []; + for (var _i = 1; _i < arguments.length; _i++) { + rest[_i - 1] = arguments[_i]; + } + }; + return D; +})(); diff --git a/tests/baselines/reference/emitRestParametersMethod.types b/tests/baselines/reference/emitRestParametersMethod.types new file mode 100644 index 00000000000..c94561ca737 --- /dev/null +++ b/tests/baselines/reference/emitRestParametersMethod.types @@ -0,0 +1,33 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersMethod.ts === +class C { +>C : C + + constructor(name: string, ...rest) { } +>name : string +>rest : any[] + + public bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + + public foo(x: number, ...rest) { } +>foo : (x: number, ...rest: any[]) => void +>x : number +>rest : any[] +} + +class D { +>D : D + + constructor(...rest) { } +>rest : any[] + + public bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + + public foo(x: number, ...rest) { } +>foo : (x: number, ...rest: any[]) => void +>x : number +>rest : any[] +} diff --git a/tests/baselines/reference/emitRestParametersMethodES6.js b/tests/baselines/reference/emitRestParametersMethodES6.js new file mode 100644 index 00000000000..d0a0e2a120c --- /dev/null +++ b/tests/baselines/reference/emitRestParametersMethodES6.js @@ -0,0 +1,35 @@ +//// [emitRestParametersMethodES6.ts] +class C { + constructor(name: string, ...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + +class D { + constructor(...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + + +//// [emitRestParametersMethodES6.js] +var C = (function () { + function C(name, ...rest) { + } + C.prototype.bar = function (...rest) { + }; + C.prototype.foo = function (x, ...rest) { + }; + return C; +})(); +var D = (function () { + function D(...rest) { + } + D.prototype.bar = function (...rest) { + }; + D.prototype.foo = function (x, ...rest) { + }; + return D; +})(); diff --git a/tests/baselines/reference/emitRestParametersMethodES6.types b/tests/baselines/reference/emitRestParametersMethodES6.types new file mode 100644 index 00000000000..4555a5c666d --- /dev/null +++ b/tests/baselines/reference/emitRestParametersMethodES6.types @@ -0,0 +1,34 @@ +=== tests/cases/conformance/es6/restParameters/emitRestParametersMethodES6.ts === +class C { +>C : C + + constructor(name: string, ...rest) { } +>name : string +>rest : any[] + + public bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + + public foo(x: number, ...rest) { } +>foo : (x: number, ...rest: any[]) => void +>x : number +>rest : any[] +} + +class D { +>D : D + + constructor(...rest) { } +>rest : any[] + + public bar(...rest) { } +>bar : (...rest: any[]) => void +>rest : any[] + + public foo(x: number, ...rest) { } +>foo : (x: number, ...rest: any[]) => void +>x : number +>rest : any[] +} + diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunction.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunction.ts new file mode 100644 index 00000000000..ee170d2bcb9 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunction.ts @@ -0,0 +1,3 @@ +// @target: es5 +function bar(...rest) { } +function foo(x: number, y: string, ...rest) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionES6.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionES6.ts new file mode 100644 index 00000000000..366905d764b --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionES6.ts @@ -0,0 +1,3 @@ +// @target: es6 +function bar(...rest) { } +function foo(x: number, y: string, ...rest) { } \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpression.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpression.ts new file mode 100644 index 00000000000..a9ddf83c816 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpression.ts @@ -0,0 +1,5 @@ +// @target: es5 +var funcExp = (...rest) => { } +var funcExp1 = (X: number, ...rest) => { } +var funcExp2 = function (...rest) { } +var funcExp3 = (function (...rest) { })() diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpressionES6.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpressionES6.ts new file mode 100644 index 00000000000..310dcfd1557 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionExpressionES6.ts @@ -0,0 +1,5 @@ +// @target: es6 +var funcExp = (...rest) => { } +var funcExp1 = (X: number, ...rest) => { } +var funcExp2 = function (...rest) { } +var funcExp3 = (function (...rest) { })() \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionProperty.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionProperty.ts new file mode 100644 index 00000000000..c8a8ed16e7b --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionProperty.ts @@ -0,0 +1,8 @@ +// @target: es5 +var obj: { + func1: (...rest) => void +} + +var obj2 = { + func(...rest) { } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionPropertyES6.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionPropertyES6.ts new file mode 100644 index 00000000000..34bb0cae6b7 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersFunctionPropertyES6.ts @@ -0,0 +1,8 @@ +// @target: es6 +var obj: { + func1: (...rest) => void +} + +var obj2 = { + func(...rest) { } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersMethod.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersMethod.ts new file mode 100644 index 00000000000..6b9e70fd196 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersMethod.ts @@ -0,0 +1,14 @@ +// @target: es5 +class C { + constructor(name: string, ...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + +class D { + constructor(...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} \ No newline at end of file diff --git a/tests/cases/conformance/es6/restParameters/emitRestParametersMethodES6.ts b/tests/cases/conformance/es6/restParameters/emitRestParametersMethodES6.ts new file mode 100644 index 00000000000..df2f2293c75 --- /dev/null +++ b/tests/cases/conformance/es6/restParameters/emitRestParametersMethodES6.ts @@ -0,0 +1,14 @@ +// @target: es6 +class C { + constructor(name: string, ...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +} + +class D { + constructor(...rest) { } + + public bar(...rest) { } + public foo(x: number, ...rest) { } +}