Add tests covering emitting rest parameters natively in ES6

This commit is contained in:
Yui T 2015-01-05 13:33:44 -08:00
parent 22bf60e431
commit ec5c115cfa
24 changed files with 431 additions and 0 deletions

View file

@ -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];
}
}

View file

@ -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[]

View file

@ -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) {
}

View file

@ -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[]

View file

@ -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];
}
})();

View file

@ -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[]

View file

@ -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) {
})();

View file

@ -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[]

View file

@ -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];
}
}
};

View file

@ -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[]
}

View file

@ -0,0 +1,15 @@
//// [emitRestParametersFunctionPropertyES6.ts]
var obj: {
func1: (...rest) => void
}
var obj2 = {
func(...rest) { }
}
//// [emitRestParametersFunctionPropertyES6.js]
var obj;
var obj2 = {
func(...rest) {
}
};

View file

@ -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[]
}

View file

@ -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;
})();

View file

@ -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[]
}

View file

@ -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;
})();

View file

@ -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[]
}

View file

@ -0,0 +1,3 @@
// @target: es5
function bar(...rest) { }
function foo(x: number, y: string, ...rest) { }

View file

@ -0,0 +1,3 @@
// @target: es6
function bar(...rest) { }
function foo(x: number, y: string, ...rest) { }

View file

@ -0,0 +1,5 @@
// @target: es5
var funcExp = (...rest) => { }
var funcExp1 = (X: number, ...rest) => { }
var funcExp2 = function (...rest) { }
var funcExp3 = (function (...rest) { })()

View file

@ -0,0 +1,5 @@
// @target: es6
var funcExp = (...rest) => { }
var funcExp1 = (X: number, ...rest) => { }
var funcExp2 = function (...rest) { }
var funcExp3 = (function (...rest) { })()

View file

@ -0,0 +1,8 @@
// @target: es5
var obj: {
func1: (...rest) => void
}
var obj2 = {
func(...rest) { }
}

View file

@ -0,0 +1,8 @@
// @target: es6
var obj: {
func1: (...rest) => void
}
var obj2 = {
func(...rest) { }
}

View file

@ -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) { }
}

View file

@ -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) { }
}