Merge pull request #1604 from Microsoft/addTestsForRestAndDefault

Add tests for rest and default
This commit is contained in:
Yui 2015-01-15 14:32:57 -08:00
commit 778c91ef47
48 changed files with 1069 additions and 0 deletions

View file

@ -0,0 +1,27 @@
//// [emitDefaultParametersFunction.ts]
function foo(x: string, y = 10) { }
function baz(x: string, y = 5, ...rest) { }
function bar(y = 10) { }
function bar1(y = 10, ...rest) { }
//// [emitDefaultParametersFunction.js]
function foo(x, y) {
if (y === void 0) { y = 10; }
}
function baz(x, y) {
if (y === void 0) { y = 5; }
var rest = [];
for (var _i = 2; _i < arguments.length; _i++) {
rest[_i - 2] = arguments[_i];
}
}
function bar(y) {
if (y === void 0) { y = 10; }
}
function bar1(y) {
if (y === void 0) { y = 10; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
}

View file

@ -0,0 +1,21 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunction.ts ===
function foo(x: string, y = 10) { }
>foo : (x: string, y?: number) => void
>x : string
>y : number
function baz(x: string, y = 5, ...rest) { }
>baz : (x: string, y?: number, ...rest: any[]) => void
>x : string
>y : number
>rest : any[]
function bar(y = 10) { }
>bar : (y?: number) => void
>y : number
function bar1(y = 10, ...rest) { }
>bar1 : (y?: number, ...rest: any[]) => void
>y : number
>rest : any[]

View file

@ -0,0 +1,15 @@
//// [emitDefaultParametersFunctionES6.ts]
function foo(x: string, y = 10) { }
function baz(x: string, y = 5, ...rest) { }
function bar(y = 10) { }
function bar1(y = 10, ...rest) { }
//// [emitDefaultParametersFunctionES6.js]
function foo(x, y = 10) {
}
function baz(x, y = 5, ...rest) {
}
function bar(y = 10) {
}
function bar1(y = 10, ...rest) {
}

View file

@ -0,0 +1,21 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunctionES6.ts ===
function foo(x: string, y = 10) { }
>foo : (x: string, y?: number) => void
>x : string
>y : number
function baz(x: string, y = 5, ...rest) { }
>baz : (x: string, y?: number, ...rest: any[]) => void
>x : string
>y : number
>rest : any[]
function bar(y = 10) { }
>bar : (y?: number) => void
>y : number
function bar1(y = 10, ...rest) { }
>bar1 : (y?: number, ...rest: any[]) => void
>y : number
>rest : any[]

View file

@ -0,0 +1,54 @@
//// [emitDefaultParametersFunctionExpression.ts]
var lambda1 = (y = "hello") => { }
var lambda2 = (x: number, y = "hello") => { }
var lambda3 = (x: number, y = "hello", ...rest) => { }
var lambda4 = (y = "hello", ...rest) => { }
var x = function (str = "hello", ...rest) { }
var y = (function (num = 10, boo = false, ...rest) { })()
var z = (function (num: number, boo = false, ...rest) { })(10)
//// [emitDefaultParametersFunctionExpression.js]
var lambda1 = function (y) {
if (y === void 0) { y = "hello"; }
};
var lambda2 = function (x, y) {
if (y === void 0) { y = "hello"; }
};
var lambda3 = function (x, y) {
if (y === void 0) { y = "hello"; }
var rest = [];
for (var _i = 2; _i < arguments.length; _i++) {
rest[_i - 2] = arguments[_i];
}
};
var lambda4 = function (y) {
if (y === void 0) { y = "hello"; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
};
var x = function (str) {
if (str === void 0) { str = "hello"; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
};
var y = (function (num, boo) {
if (num === void 0) { num = 10; }
if (boo === void 0) { boo = false; }
var rest = [];
for (var _i = 2; _i < arguments.length; _i++) {
rest[_i - 2] = arguments[_i];
}
})();
var z = (function (num, boo) {
if (boo === void 0) { boo = false; }
var rest = [];
for (var _i = 2; _i < arguments.length; _i++) {
rest[_i - 2] = arguments[_i];
}
})(10);

View file

@ -0,0 +1,49 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunctionExpression.ts ===
var lambda1 = (y = "hello") => { }
>lambda1 : (y?: string) => void
>(y = "hello") => { } : (y?: string) => void
>y : string
var lambda2 = (x: number, y = "hello") => { }
>lambda2 : (x: number, y?: string) => void
>(x: number, y = "hello") => { } : (x: number, y?: string) => void
>x : number
>y : string
var lambda3 = (x: number, y = "hello", ...rest) => { }
>lambda3 : (x: number, y?: string, ...rest: any[]) => void
>(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void
>x : number
>y : string
>rest : any[]
var lambda4 = (y = "hello", ...rest) => { }
>lambda4 : (y?: string, ...rest: any[]) => void
>(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void
>y : string
>rest : any[]
var x = function (str = "hello", ...rest) { }
>x : (str?: string, ...rest: any[]) => void
>function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void
>str : string
>rest : any[]
var y = (function (num = 10, boo = false, ...rest) { })()
>y : void
>(function (num = 10, boo = false, ...rest) { })() : void
>(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean, ...rest: any[]) => void
>function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean, ...rest: any[]) => void
>num : number
>boo : boolean
>rest : any[]
var z = (function (num: number, boo = false, ...rest) { })(10)
>z : void
>(function (num: number, boo = false, ...rest) { })(10) : void
>(function (num: number, boo = false, ...rest) { }) : (num: number, boo?: boolean, ...rest: any[]) => void
>function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean, ...rest: any[]) => void
>num : number
>boo : boolean
>rest : any[]

View file

@ -0,0 +1,25 @@
//// [emitDefaultParametersFunctionExpressionES6.ts]
var lambda1 = (y = "hello") => { }
var lambda2 = (x: number, y = "hello") => { }
var lambda3 = (x: number, y = "hello", ...rest) => { }
var lambda4 = (y = "hello", ...rest) => { }
var x = function (str = "hello", ...rest) { }
var y = (function (num = 10, boo = false, ...rest) { })()
var z = (function (num: number, boo = false, ...rest) { })(10)
//// [emitDefaultParametersFunctionExpressionES6.js]
var lambda1 = function (y = "hello") {
};
var lambda2 = function (x, y = "hello") {
};
var lambda3 = function (x, y = "hello", ...rest) {
};
var lambda4 = function (y = "hello", ...rest) {
};
var x = function (str = "hello", ...rest) {
};
var y = (function (num = 10, boo = false, ...rest) {
})();
var z = (function (num, boo = false, ...rest) {
})(10);

View file

@ -0,0 +1,49 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunctionExpressionES6.ts ===
var lambda1 = (y = "hello") => { }
>lambda1 : (y?: string) => void
>(y = "hello") => { } : (y?: string) => void
>y : string
var lambda2 = (x: number, y = "hello") => { }
>lambda2 : (x: number, y?: string) => void
>(x: number, y = "hello") => { } : (x: number, y?: string) => void
>x : number
>y : string
var lambda3 = (x: number, y = "hello", ...rest) => { }
>lambda3 : (x: number, y?: string, ...rest: any[]) => void
>(x: number, y = "hello", ...rest) => { } : (x: number, y?: string, ...rest: any[]) => void
>x : number
>y : string
>rest : any[]
var lambda4 = (y = "hello", ...rest) => { }
>lambda4 : (y?: string, ...rest: any[]) => void
>(y = "hello", ...rest) => { } : (y?: string, ...rest: any[]) => void
>y : string
>rest : any[]
var x = function (str = "hello", ...rest) { }
>x : (str?: string, ...rest: any[]) => void
>function (str = "hello", ...rest) { } : (str?: string, ...rest: any[]) => void
>str : string
>rest : any[]
var y = (function (num = 10, boo = false, ...rest) { })()
>y : void
>(function (num = 10, boo = false, ...rest) { })() : void
>(function (num = 10, boo = false, ...rest) { }) : (num?: number, boo?: boolean, ...rest: any[]) => void
>function (num = 10, boo = false, ...rest) { } : (num?: number, boo?: boolean, ...rest: any[]) => void
>num : number
>boo : boolean
>rest : any[]
var z = (function (num: number, boo = false, ...rest) { })(10)
>z : void
>(function (num: number, boo = false, ...rest) { })(10) : void
>(function (num: number, boo = false, ...rest) { }) : (num: number, boo?: boolean, ...rest: any[]) => void
>function (num: number, boo = false, ...rest) { } : (num: number, boo?: boolean, ...rest: any[]) => void
>num : number
>boo : boolean
>rest : any[]

View file

@ -0,0 +1,32 @@
//// [emitDefaultParametersFunctionProperty.ts]
var obj2 = {
func1(y = 10, ...rest) { },
func2(x = "hello") { },
func3(x: string, z: number, y = "hello") { },
func4(x: string, z: number, y = "hello", ...rest) { },
}
//// [emitDefaultParametersFunctionProperty.js]
var obj2 = {
func1: function (y) {
if (y === void 0) { y = 10; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
},
func2: function (x) {
if (x === void 0) { x = "hello"; }
},
func3: function (x, z, y) {
if (y === void 0) { y = "hello"; }
},
func4: function (x, z, y) {
if (y === void 0) { y = "hello"; }
var rest = [];
for (var _i = 3; _i < arguments.length; _i++) {
rest[_i - 3] = arguments[_i];
}
},
};

View file

@ -0,0 +1,28 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunctionProperty.ts ===
var obj2 = {
>obj2 : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; }
>{ func1(y = 10, ...rest) { }, func2(x = "hello") { }, func3(x: string, z: number, y = "hello") { }, func4(x: string, z: number, y = "hello", ...rest) { },} : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; }
func1(y = 10, ...rest) { },
>func1 : (y?: number, ...rest: any[]) => void
>y : number
>rest : any[]
func2(x = "hello") { },
>func2 : (x?: string) => void
>x : string
func3(x: string, z: number, y = "hello") { },
>func3 : (x: string, z: number, y?: string) => void
>x : string
>z : number
>y : string
func4(x: string, z: number, y = "hello", ...rest) { },
>func4 : (x: string, z: number, y?: string, ...rest: any[]) => void
>x : string
>z : number
>y : string
>rest : any[]
}

View file

@ -0,0 +1,19 @@
//// [emitDefaultParametersFunctionPropertyES6.ts]
var obj2 = {
func1(y = 10, ...rest) { },
func2(x = "hello") { },
func3(x: string, z: number, y = "hello") { },
func4(x: string, z: number, y = "hello", ...rest) { },
}
//// [emitDefaultParametersFunctionPropertyES6.js]
var obj2 = {
func1(y = 10, ...rest) {
},
func2(x = "hello") {
},
func3(x, z, y = "hello") {
},
func4(x, z, y = "hello", ...rest) {
},
};

View file

@ -0,0 +1,27 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersFunctionPropertyES6.ts ===
var obj2 = {
>obj2 : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; }
>{ func1(y = 10, ...rest) { }, func2(x = "hello") { }, func3(x: string, z: number, y = "hello") { }, func4(x: string, z: number, y = "hello", ...rest) { },} : { func1(y?: number, ...rest: any[]): void; func2(x?: string): void; func3(x: string, z: number, y?: string): void; func4(x: string, z: number, y?: string, ...rest: any[]): void; }
func1(y = 10, ...rest) { },
>func1 : (y?: number, ...rest: any[]) => void
>y : number
>rest : any[]
func2(x = "hello") { },
>func2 : (x?: string) => void
>x : string
func3(x: string, z: number, y = "hello") { },
>func3 : (x: string, z: number, y?: string) => void
>x : string
>z : number
>y : string
func4(x: string, z: number, y = "hello", ...rest) { },
>func4 : (x: string, z: number, y?: string, ...rest: any[]) => void
>x : string
>z : number
>y : string
>rest : any[]
}

View file

@ -0,0 +1,62 @@
//// [emitDefaultParametersMethod.ts]
class C {
constructor(t: boolean, z: string, x: number, y = "hello") { }
public foo(x: string, t = false) { }
public foo1(x: string, t = false, ...rest) { }
public bar(t = false) { }
public boo(t = false, ...rest) { }
}
class D {
constructor(y = "hello") { }
}
class E {
constructor(y = "hello", ...rest) { }
}
//// [emitDefaultParametersMethod.js]
var C = (function () {
function C(t, z, x, y) {
if (y === void 0) { y = "hello"; }
}
C.prototype.foo = function (x, t) {
if (t === void 0) { t = false; }
};
C.prototype.foo1 = function (x, t) {
if (t === void 0) { t = false; }
var rest = [];
for (var _i = 2; _i < arguments.length; _i++) {
rest[_i - 2] = arguments[_i];
}
};
C.prototype.bar = function (t) {
if (t === void 0) { t = false; }
};
C.prototype.boo = function (t) {
if (t === void 0) { t = false; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
};
return C;
})();
var D = (function () {
function D(y) {
if (y === void 0) { y = "hello"; }
}
return D;
})();
var E = (function () {
function E(y) {
if (y === void 0) { y = "hello"; }
var rest = [];
for (var _i = 1; _i < arguments.length; _i++) {
rest[_i - 1] = arguments[_i];
}
}
return E;
})();

View file

@ -0,0 +1,46 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersMethod.ts ===
class C {
>C : C
constructor(t: boolean, z: string, x: number, y = "hello") { }
>t : boolean
>z : string
>x : number
>y : string
public foo(x: string, t = false) { }
>foo : (x: string, t?: boolean) => void
>x : string
>t : boolean
public foo1(x: string, t = false, ...rest) { }
>foo1 : (x: string, t?: boolean, ...rest: any[]) => void
>x : string
>t : boolean
>rest : any[]
public bar(t = false) { }
>bar : (t?: boolean) => void
>t : boolean
public boo(t = false, ...rest) { }
>boo : (t?: boolean, ...rest: any[]) => void
>t : boolean
>rest : any[]
}
class D {
>D : D
constructor(y = "hello") { }
>y : string
}
class E {
>E : E
constructor(y = "hello", ...rest) { }
>y : string
>rest : any[]
}

View file

@ -0,0 +1,42 @@
//// [emitDefaultParametersMethodES6.ts]
class C {
constructor(t: boolean, z: string, x: number, y = "hello") { }
public foo(x: string, t = false) { }
public foo1(x: string, t = false, ...rest) { }
public bar(t = false) { }
public boo(t = false, ...rest) { }
}
class D {
constructor(y = "hello") { }
}
class E {
constructor(y = "hello", ...rest) { }
}
//// [emitDefaultParametersMethodES6.js]
var C = (function () {
function C(t, z, x, y = "hello") {
}
C.prototype.foo = function (x, t = false) {
};
C.prototype.foo1 = function (x, t = false, ...rest) {
};
C.prototype.bar = function (t = false) {
};
C.prototype.boo = function (t = false, ...rest) {
};
return C;
})();
var D = (function () {
function D(y = "hello") {
}
return D;
})();
var E = (function () {
function E(y = "hello", ...rest) {
}
return E;
})();

View file

@ -0,0 +1,45 @@
=== tests/cases/conformance/es6/defaultParameters/emitDefaultParametersMethodES6.ts ===
class C {
>C : C
constructor(t: boolean, z: string, x: number, y = "hello") { }
>t : boolean
>z : string
>x : number
>y : string
public foo(x: string, t = false) { }
>foo : (x: string, t?: boolean) => void
>x : string
>t : boolean
public foo1(x: string, t = false, ...rest) { }
>foo1 : (x: string, t?: boolean, ...rest: any[]) => void
>x : string
>t : boolean
>rest : any[]
public bar(t = false) { }
>bar : (t?: boolean) => void
>t : boolean
public boo(t = false, ...rest) { }
>boo : (t?: boolean, ...rest: any[]) => void
>t : boolean
>rest : any[]
}
class D {
>D : D
constructor(y = "hello") { }
>y : string
}
class E {
>E : E
constructor(y = "hello", ...rest) { }
>y : string
>rest : any[]
}

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,5 @@
// @target: es5
function foo(x: string, y = 10) { }
function baz(x: string, y = 5, ...rest) { }
function bar(y = 10) { }
function bar1(y = 10, ...rest) { }

View file

@ -0,0 +1,5 @@
// @target:es6
function foo(x: string, y = 10) { }
function baz(x: string, y = 5, ...rest) { }
function bar(y = 10) { }
function bar1(y = 10, ...rest) { }

View file

@ -0,0 +1,9 @@
// @target: es5
var lambda1 = (y = "hello") => { }
var lambda2 = (x: number, y = "hello") => { }
var lambda3 = (x: number, y = "hello", ...rest) => { }
var lambda4 = (y = "hello", ...rest) => { }
var x = function (str = "hello", ...rest) { }
var y = (function (num = 10, boo = false, ...rest) { })()
var z = (function (num: number, boo = false, ...rest) { })(10)

View file

@ -0,0 +1,9 @@
// @target:es6
var lambda1 = (y = "hello") => { }
var lambda2 = (x: number, y = "hello") => { }
var lambda3 = (x: number, y = "hello", ...rest) => { }
var lambda4 = (y = "hello", ...rest) => { }
var x = function (str = "hello", ...rest) { }
var y = (function (num = 10, boo = false, ...rest) { })()
var z = (function (num: number, boo = false, ...rest) { })(10)

View file

@ -0,0 +1,7 @@
// @target: es5
var obj2 = {
func1(y = 10, ...rest) { },
func2(x = "hello") { },
func3(x: string, z: number, y = "hello") { },
func4(x: string, z: number, y = "hello", ...rest) { },
}

View file

@ -0,0 +1,7 @@
// @target:es6
var obj2 = {
func1(y = 10, ...rest) { },
func2(x = "hello") { },
func3(x: string, z: number, y = "hello") { },
func4(x: string, z: number, y = "hello", ...rest) { },
}

View file

@ -0,0 +1,17 @@
// @target: es5
class C {
constructor(t: boolean, z: string, x: number, y = "hello") { }
public foo(x: string, t = false) { }
public foo1(x: string, t = false, ...rest) { }
public bar(t = false) { }
public boo(t = false, ...rest) { }
}
class D {
constructor(y = "hello") { }
}
class E {
constructor(y = "hello", ...rest) { }
}

View file

@ -0,0 +1,17 @@
// @target:es6
class C {
constructor(t: boolean, z: string, x: number, y = "hello") { }
public foo(x: string, t = false) { }
public foo1(x: string, t = false, ...rest) { }
public bar(t = false) { }
public boo(t = false, ...rest) { }
}
class D {
constructor(y = "hello") { }
}
class E {
constructor(y = "hello", ...rest) { }
}

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