Adding tests and accepting new baselines

This commit is contained in:
Anders Hejlsberg 2014-12-12 10:56:22 -08:00
parent a1533b695b
commit 86a9c80ff8
8 changed files with 300 additions and 8 deletions

View file

@ -0,0 +1,46 @@
//// [arrayLiteralSpread.ts]
function f0() {
var a = [1, 2, 3];
var a1 = [...a];
var a2 = [1, ...a];
var a3 = [1, 2, ...a];
var a4 = [...a, 1];
var a5 = [...a, 1, 2];
var a6 = [1, 2, ...a, 1, 2];
var a7 = [1, ...a, 2, ...a];
var a8 = [...a, ...a, ...a];
}
function f1() {
var a = [1, 2, 3];
var b = ["hello", ...a, true];
var b: (string | number | boolean)[];
}
function f2() {
var a = [...[...[...[...[...[]]]]]];
var b = [...[...[...[...[...[5]]]]]];
}
//// [arrayLiteralSpread.js]
function f0() {
var a = [1, 2, 3];
var a1 = a;
var a2 = [1].concat(a);
var a3 = [1, 2].concat(a);
var a4 = a.concat([1]);
var a5 = a.concat([1, 2]);
var a6 = [1, 2].concat(a, [1, 2]);
var a7 = [1].concat(a, [2], a);
var a8 = a.concat(a, a);
}
function f1() {
var a = [1, 2, 3];
var b = ["hello"].concat(a, [true]);
var b;
}
function f2() {
var a = [];
var b = [5];
}

View file

@ -0,0 +1,90 @@
=== tests/cases/conformance/es6/spread/arrayLiteralSpread.ts ===
function f0() {
>f0 : () => void
var a = [1, 2, 3];
>a : number[]
>[1, 2, 3] : number[]
var a1 = [...a];
>a1 : number[]
>[...a] : number[]
>a : number[]
var a2 = [1, ...a];
>a2 : number[]
>[1, ...a] : number[]
>a : number[]
var a3 = [1, 2, ...a];
>a3 : number[]
>[1, 2, ...a] : number[]
>a : number[]
var a4 = [...a, 1];
>a4 : number[]
>[...a, 1] : number[]
>a : number[]
var a5 = [...a, 1, 2];
>a5 : number[]
>[...a, 1, 2] : number[]
>a : number[]
var a6 = [1, 2, ...a, 1, 2];
>a6 : number[]
>[1, 2, ...a, 1, 2] : number[]
>a : number[]
var a7 = [1, ...a, 2, ...a];
>a7 : number[]
>[1, ...a, 2, ...a] : number[]
>a : number[]
>a : number[]
var a8 = [...a, ...a, ...a];
>a8 : number[]
>[...a, ...a, ...a] : number[]
>a : number[]
>a : number[]
>a : number[]
}
function f1() {
>f1 : () => void
var a = [1, 2, 3];
>a : number[]
>[1, 2, 3] : number[]
var b = ["hello", ...a, true];
>b : (string | number | boolean)[]
>["hello", ...a, true] : (string | number | boolean)[]
>a : number[]
var b: (string | number | boolean)[];
>b : (string | number | boolean)[]
}
function f2() {
>f2 : () => void
var a = [...[...[...[...[...[]]]]]];
>a : any[]
>[...[...[...[...[...[]]]]]] : undefined[]
>[...[...[...[...[]]]]] : undefined[]
>[...[...[...[]]]] : undefined[]
>[...[...[]]] : undefined[]
>[...[]] : undefined[]
>[] : undefined[]
var b = [...[...[...[...[...[5]]]]]];
>b : number[]
>[...[...[...[...[...[5]]]]]] : number[]
>[...[...[...[...[5]]]]] : number[]
>[...[...[...[5]]]] : number[]
>[...[...[5]]] : number[]
>[...[5]] : number[]
>[5] : number[]
}

View file

@ -176,7 +176,7 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9):
f17({ c: true });
f17(f15());
function g4() {
function f18() {
var a: number;
var b: string;
var aa: number[];
@ -191,7 +191,7 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9):
[a = 1, b = "abc"] = [2, "def"];
}
function g5() {
function f19() {
var a, b;
[a, b] = [1, 2];
[a, b] = [b, a];
@ -199,4 +199,34 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9):
[[a, b] = [1, 2]] = [[2, 3]];
var x = ([a, b] = [1, 2]);
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var [...a] = [1, 2, 3];
var [x, ...a] = [1, 2, 3];
var [x, y, ...a] = [1, 2, 3];
var [x, y, z, ...a] = [1, 2, 3];
[...a] = [1, 2, 3];
[x, ...a] = [1, 2, 3];
[x, y, ...a] = [1, 2, 3];
[x, y, z, ...a] = [1, 2, 3];
}
function f21() {
var a: (number | string | boolean)[];
var x: number | string | boolean;
var y: number | string | boolean;
var z: number | string | boolean;
var [...a] = [1, "hello", true];
var [x, ...a] = [1, "hello", true];
var [x, y, ...a] = [1, "hello", true];
var [x, y, z, ...a] = [1, "hello", true];
[...a] = [1, "hello", true];
[x, ...a] = [1, "hello", true];
[x, y, ...a] = [1, "hello", true];
[x, y, z, ...a] = [1, "hello", true];
}

View file

@ -129,7 +129,7 @@ f17({ a: "hello" });
f17({ c: true });
f17(f15());
function g4() {
function f18() {
var a: number;
var b: string;
var aa: number[];
@ -140,7 +140,7 @@ function g4() {
[a = 1, b = "abc"] = [2, "def"];
}
function g5() {
function f19() {
var a, b;
[a, b] = [1, 2];
[a, b] = [b, a];
@ -148,6 +148,36 @@ function g5() {
[[a, b] = [1, 2]] = [[2, 3]];
var x = ([a, b] = [1, 2]);
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var [...a] = [1, 2, 3];
var [x, ...a] = [1, 2, 3];
var [x, y, ...a] = [1, 2, 3];
var [x, y, z, ...a] = [1, 2, 3];
[...a] = [1, 2, 3];
[x, ...a] = [1, 2, 3];
[x, y, ...a] = [1, 2, 3];
[x, y, z, ...a] = [1, 2, 3];
}
function f21() {
var a: (number | string | boolean)[];
var x: number | string | boolean;
var y: number | string | boolean;
var z: number | string | boolean;
var [...a] = [1, "hello", true];
var [x, ...a] = [1, "hello", true];
var [x, y, ...a] = [1, "hello", true];
var [x, y, z, ...a] = [1, "hello", true];
[...a] = [1, "hello", true];
[x, ...a] = [1, "hello", true];
[x, y, ...a] = [1, "hello", true];
[x, y, z, ...a] = [1, "hello", true];
}
//// [declarationsAndAssignments.js]
@ -266,7 +296,7 @@ f17({});
f17({ a: "hello" });
f17({ c: true });
f17(f15());
function g4() {
function f18() {
var a;
var b;
var aa;
@ -277,7 +307,7 @@ function g4() {
_e = [2, "def"], _f = _e[0], a = _f === void0 ? 1 : _f, _g = _e[1], b = _g === void0 ? "abc" : _g;
var _a, _b, _c, _d, _e, _f, _g;
}
function g5() {
function f19() {
var a, b;
_a = [1, 2], a = _a[0], b = _a[1];
_b = [b, a], a = _b[0], b = _b[1];
@ -286,3 +316,33 @@ function g5() {
var x = (_f = [1, 2], a = _f[0], b = _f[1], _f);
var _a, _b, _c, _d, _e, _f;
}
function f20() {
var a;
var x;
var y;
var z;
var _a = [1, 2, 3], a = _a.slice(0);
var _b = [1, 2, 3], x = _b[0], a = _b.slice(1);
var _c = [1, 2, 3], x = _c[0], y = _c[1], a = _c.slice(2);
var _d = [1, 2, 3], x = _d[0], y = _d[1], z = _d[2], a = _d.slice(3);
_e = [1, 2, 3], a = _e.slice(0);
_f = [1, 2, 3], x = _f[0], a = _f.slice(1);
_g = [1, 2, 3], x = _g[0], y = _g[1], a = _g.slice(2);
_h = [1, 2, 3], x = _h[0], y = _h[1], z = _h[2], a = _h.slice(3);
var _e, _f, _g, _h;
}
function f21() {
var a;
var x;
var y;
var z;
var _a = [1, "hello", true], a = _a.slice(0);
var _b = [1, "hello", true], x = _b[0], a = _b.slice(1);
var _c = [1, "hello", true], x = _c[0], y = _c[1], a = _c.slice(2);
var _d = [1, "hello", true], x = _d[0], y = _d[1], z = _d[2], a = _d.slice(3);
_e = [1, "hello", true], a = _e.slice(0);
_f = [1, "hello", true], x = _f[0], a = _f.slice(1);
_g = [1, "hello", true], x = _g[0], y = _g[1], a = _g.slice(2);
_h = [1, "hello", true], x = _h[0], y = _h[1], z = _h[2], a = _h.slice(3);
var _e, _f, _g, _h;
}

View file

@ -0,0 +1,12 @@
tests/cases/conformance/es6/destructuring/restElementMustBeLast.ts(1,9): error TS2462: A rest element must be last in an array destructuring pattern
tests/cases/conformance/es6/destructuring/restElementMustBeLast.ts(2,2): error TS2462: A rest element must be last in an array destructuring pattern
==== tests/cases/conformance/es6/destructuring/restElementMustBeLast.ts (2 errors) ====
var [...a, x] = [1, 2, 3]; // Error, rest must be last element
~
!!! error TS2462: A rest element must be last in an array destructuring pattern
[...a, x] = [1, 2, 3]; // Error, rest must be last element
~~~~
!!! error TS2462: A rest element must be last in an array destructuring pattern

View file

@ -128,7 +128,7 @@ f17({ a: "hello" });
f17({ c: true });
f17(f15());
function g4() {
function f18() {
var a: number;
var b: string;
var aa: number[];
@ -139,7 +139,7 @@ function g4() {
[a = 1, b = "abc"] = [2, "def"];
}
function g5() {
function f19() {
var a, b;
[a, b] = [1, 2];
[a, b] = [b, a];
@ -147,3 +147,33 @@ function g5() {
[[a, b] = [1, 2]] = [[2, 3]];
var x = ([a, b] = [1, 2]);
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var [...a] = [1, 2, 3];
var [x, ...a] = [1, 2, 3];
var [x, y, ...a] = [1, 2, 3];
var [x, y, z, ...a] = [1, 2, 3];
[...a] = [1, 2, 3];
[x, ...a] = [1, 2, 3];
[x, y, ...a] = [1, 2, 3];
[x, y, z, ...a] = [1, 2, 3];
}
function f21() {
var a: (number | string | boolean)[];
var x: number | string | boolean;
var y: number | string | boolean;
var z: number | string | boolean;
var [...a] = [1, "hello", true];
var [x, ...a] = [1, "hello", true];
var [x, y, ...a] = [1, "hello", true];
var [x, y, z, ...a] = [1, "hello", true];
[...a] = [1, "hello", true];
[x, ...a] = [1, "hello", true];
[x, y, ...a] = [1, "hello", true];
[x, y, z, ...a] = [1, "hello", true];
}

View file

@ -0,0 +1,2 @@
var [...a, x] = [1, 2, 3]; // Error, rest must be last element
[...a, x] = [1, 2, 3]; // Error, rest must be last element

View file

@ -0,0 +1,22 @@
function f0() {
var a = [1, 2, 3];
var a1 = [...a];
var a2 = [1, ...a];
var a3 = [1, 2, ...a];
var a4 = [...a, 1];
var a5 = [...a, 1, 2];
var a6 = [1, 2, ...a, 1, 2];
var a7 = [1, ...a, 2, ...a];
var a8 = [...a, ...a, ...a];
}
function f1() {
var a = [1, 2, 3];
var b = ["hello", ...a, true];
var b: (string | number | boolean)[];
}
function f2() {
var a = [...[...[...[...[...[]]]]]];
var b = [...[...[...[...[...[5]]]]]];
}