Update tests

This commit is contained in:
Anders Hejlsberg 2018-06-21 17:02:35 -10:00
parent ae859d6303
commit c2310009e1
5 changed files with 245 additions and 205 deletions

View file

@ -103,7 +103,7 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9):
}
function f8() {
var [a, b, c] = []; // Ok, [] is an array
var [a, b, c] = []; // Error, [] is an empty tuple
~
!!! error TS2525: Initializer provides no value for this binding element and the binding element has no default value.
~
@ -224,32 +224,36 @@ tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts(138,9):
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var a: number[];
var a3: any[];
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];
var [x, y, z, ...a3] = [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];
[x, y, z, ...a3] = [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];
var x: number;
var y: string;
var z: boolean;
var a0: (number | string | boolean)[];
var a1: (string | boolean)[];
var a2: boolean[];
var a3: any[];
var [...a0] = [1, "hello", true];
var [x, ...a1] = [1, "hello", true];
var [x, y, ...a2] = [1, "hello", true];
var [x, y, z, ...a3] = [1, "hello", true];
[...a0] = [1, "hello", true];
[x, ...a1] = [1, "hello", true];
[x, y, ...a2] = [1, "hello", true];
[x, y, z, ...a3] = [1, "hello", true];
}

View file

@ -60,7 +60,7 @@ function f7() {
}
function f8() {
var [a, b, c] = []; // Ok, [] is an array
var [a, b, c] = []; // Error, [] is an empty tuple
var [d, e, f] = [1]; // Error, [1] is a tuple
}
@ -150,33 +150,37 @@ function f19() {
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var a: number[];
var a3: any[];
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];
var [x, y, z, ...a3] = [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];
[x, y, z, ...a3] = [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];
var x: number;
var y: string;
var z: boolean;
var a0: (number | string | boolean)[];
var a1: (string | boolean)[];
var a2: boolean[];
var a3: any[];
var [...a0] = [1, "hello", true];
var [x, ...a1] = [1, "hello", true];
var [x, y, ...a2] = [1, "hello", true];
var [x, y, z, ...a3] = [1, "hello", true];
[...a0] = [1, "hello", true];
[x, ...a1] = [1, "hello", true];
[x, y, ...a2] = [1, "hello", true];
[x, y, z, ...a3] = [1, "hello", true];
}
@ -235,7 +239,7 @@ function f7() {
var y;
}
function f8() {
var _a = [], a = _a[0], b = _a[1], c = _a[2]; // Ok, [] is an array
var _a = [], a = _a[0], b = _a[1], c = _a[2]; // Error, [] is an empty tuple
var _b = [1], d = _b[0], e = _b[1], f = _b[2]; // Error, [1] is a tuple
}
function f9() {
@ -318,31 +322,35 @@ function f19() {
}
function f20() {
var _a, _b, _c;
var a;
var x;
var y;
var z;
var a;
var a3;
var a = [1, 2, 3].slice(0);
var _d = [1, 2, 3], x = _d[0], a = _d.slice(1);
var _e = [1, 2, 3], x = _e[0], y = _e[1], a = _e.slice(2);
var _f = [1, 2, 3], x = _f[0], y = _f[1], z = _f[2], a = _f.slice(3);
var _f = [1, 2, 3], x = _f[0], y = _f[1], z = _f[2], a3 = _f.slice(3);
a = [1, 2, 3].slice(0);
_a = [1, 2, 3], x = _a[0], a = _a.slice(1);
_b = [1, 2, 3], x = _b[0], y = _b[1], a = _b.slice(2);
_c = [1, 2, 3], x = _c[0], y = _c[1], z = _c[2], a = _c.slice(3);
_c = [1, 2, 3], x = _c[0], y = _c[1], z = _c[2], a3 = _c.slice(3);
}
function f21() {
var _a, _b, _c;
var a;
var x;
var y;
var z;
var a = [1, "hello", true].slice(0);
var _d = [1, "hello", true], x = _d[0], a = _d.slice(1);
var _e = [1, "hello", true], x = _e[0], y = _e[1], a = _e.slice(2);
var _f = [1, "hello", true], x = _f[0], y = _f[1], z = _f[2], a = _f.slice(3);
a = [1, "hello", true].slice(0);
_a = [1, "hello", true], x = _a[0], a = _a.slice(1);
_b = [1, "hello", true], x = _b[0], y = _b[1], a = _b.slice(2);
_c = [1, "hello", true], x = _c[0], y = _c[1], z = _c[2], a = _c.slice(3);
var a0;
var a1;
var a2;
var a3;
var a0 = [1, "hello", true].slice(0);
var _d = [1, "hello", true], x = _d[0], a1 = _d.slice(1);
var _e = [1, "hello", true], x = _e[0], y = _e[1], a2 = _e.slice(2);
var _f = [1, "hello", true], x = _f[0], y = _f[1], z = _f[2], a3 = _f.slice(3);
a0 = [1, "hello", true].slice(0);
_a = [1, "hello", true], x = _a[0], a1 = _a.slice(1);
_b = [1, "hello", true], x = _b[0], y = _b[1], a2 = _b.slice(2);
_c = [1, "hello", true], x = _c[0], y = _c[1], z = _c[2], a3 = _c.slice(3);
}

View file

@ -189,7 +189,7 @@ function f7() {
function f8() {
>f8 : Symbol(f8, Decl(declarationsAndAssignments.ts, 58, 1))
var [a, b, c] = []; // Ok, [] is an array
var [a, b, c] = []; // Error, [] is an empty tuple
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 61, 9))
>b : Symbol(b, Decl(declarationsAndAssignments.ts, 61, 11))
>c : Symbol(c, Decl(declarationsAndAssignments.ts, 61, 14))
@ -474,104 +474,116 @@ function f19() {
function f20() {
>f20 : Symbol(f20, Decl(declarationsAndAssignments.ts, 148, 1))
var a: number[];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
var x: number;
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
var y: number;
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 11))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 158, 11), Decl(declarationsAndAssignments.ts, 159, 11))
var z: number;
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 158, 14))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 159, 14))
var a: number[];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
var a3: any[];
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 155, 7), Decl(declarationsAndAssignments.ts, 159, 17))
var [...a] = [1, 2, 3];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
var [x, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
var [x, y, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 158, 11), Decl(declarationsAndAssignments.ts, 159, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
var [x, y, z, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 158, 14))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
var [x, y, z, ...a3] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 158, 11), Decl(declarationsAndAssignments.ts, 159, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 159, 14))
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 155, 7), Decl(declarationsAndAssignments.ts, 159, 17))
[...a] = [1, 2, 3];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
[x, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
[x, y, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 158, 11), Decl(declarationsAndAssignments.ts, 159, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 14))
[x, y, z, ...a] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 156, 9), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 157, 11), Decl(declarationsAndAssignments.ts, 158, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 154, 7), Decl(declarationsAndAssignments.ts, 158, 14))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 155, 9), Decl(declarationsAndAssignments.ts, 156, 11), Decl(declarationsAndAssignments.ts, 157, 14), Decl(declarationsAndAssignments.ts, 158, 17))
[x, y, z, ...a3] = [1, 2, 3];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 151, 7), Decl(declarationsAndAssignments.ts, 157, 9), Decl(declarationsAndAssignments.ts, 158, 9), Decl(declarationsAndAssignments.ts, 159, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 152, 7), Decl(declarationsAndAssignments.ts, 158, 11), Decl(declarationsAndAssignments.ts, 159, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 153, 7), Decl(declarationsAndAssignments.ts, 159, 14))
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 155, 7), Decl(declarationsAndAssignments.ts, 159, 17))
}
function f21() {
>f21 : Symbol(f21, Decl(declarationsAndAssignments.ts, 163, 1))
>f21 : Symbol(f21, Decl(declarationsAndAssignments.ts, 164, 1))
var a: (number | string | boolean)[];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var x: number;
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
var x: number | string | boolean;
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
var y: string;
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 176, 11), Decl(declarationsAndAssignments.ts, 177, 11))
var y: number | string | boolean;
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 172, 11), Decl(declarationsAndAssignments.ts, 173, 11))
var z: boolean;
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 177, 14))
var z: number | string | boolean;
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 173, 14))
var a0: (number | string | boolean)[];
>a0 : Symbol(a0, Decl(declarationsAndAssignments.ts, 170, 7), Decl(declarationsAndAssignments.ts, 174, 9))
var [...a] = [1, "hello", true];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var a1: (string | boolean)[];
>a1 : Symbol(a1, Decl(declarationsAndAssignments.ts, 171, 7), Decl(declarationsAndAssignments.ts, 175, 11))
var [x, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var a2: boolean[];
>a2 : Symbol(a2, Decl(declarationsAndAssignments.ts, 172, 7), Decl(declarationsAndAssignments.ts, 176, 14))
var [x, y, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 172, 11), Decl(declarationsAndAssignments.ts, 173, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var a3: any[];
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 173, 7), Decl(declarationsAndAssignments.ts, 177, 17))
var [x, y, z, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 172, 11), Decl(declarationsAndAssignments.ts, 173, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 173, 14))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var [...a0] = [1, "hello", true];
>a0 : Symbol(a0, Decl(declarationsAndAssignments.ts, 170, 7), Decl(declarationsAndAssignments.ts, 174, 9))
[...a] = [1, "hello", true];
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var [x, ...a1] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>a1 : Symbol(a1, Decl(declarationsAndAssignments.ts, 171, 7), Decl(declarationsAndAssignments.ts, 175, 11))
[x, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var [x, y, ...a2] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 176, 11), Decl(declarationsAndAssignments.ts, 177, 11))
>a2 : Symbol(a2, Decl(declarationsAndAssignments.ts, 172, 7), Decl(declarationsAndAssignments.ts, 176, 14))
[x, y, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 172, 11), Decl(declarationsAndAssignments.ts, 173, 11))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
var [x, y, z, ...a3] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 176, 11), Decl(declarationsAndAssignments.ts, 177, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 177, 14))
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 173, 7), Decl(declarationsAndAssignments.ts, 177, 17))
[x, y, z, ...a] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 171, 9), Decl(declarationsAndAssignments.ts, 172, 9), Decl(declarationsAndAssignments.ts, 173, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 172, 11), Decl(declarationsAndAssignments.ts, 173, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 173, 14))
>a : Symbol(a, Decl(declarationsAndAssignments.ts, 166, 7), Decl(declarationsAndAssignments.ts, 170, 9), Decl(declarationsAndAssignments.ts, 171, 11), Decl(declarationsAndAssignments.ts, 172, 14), Decl(declarationsAndAssignments.ts, 173, 17))
[...a0] = [1, "hello", true];
>a0 : Symbol(a0, Decl(declarationsAndAssignments.ts, 170, 7), Decl(declarationsAndAssignments.ts, 174, 9))
[x, ...a1] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>a1 : Symbol(a1, Decl(declarationsAndAssignments.ts, 171, 7), Decl(declarationsAndAssignments.ts, 175, 11))
[x, y, ...a2] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 176, 11), Decl(declarationsAndAssignments.ts, 177, 11))
>a2 : Symbol(a2, Decl(declarationsAndAssignments.ts, 172, 7), Decl(declarationsAndAssignments.ts, 176, 14))
[x, y, z, ...a3] = [1, "hello", true];
>x : Symbol(x, Decl(declarationsAndAssignments.ts, 167, 7), Decl(declarationsAndAssignments.ts, 175, 9), Decl(declarationsAndAssignments.ts, 176, 9), Decl(declarationsAndAssignments.ts, 177, 9))
>y : Symbol(y, Decl(declarationsAndAssignments.ts, 168, 7), Decl(declarationsAndAssignments.ts, 176, 11), Decl(declarationsAndAssignments.ts, 177, 11))
>z : Symbol(z, Decl(declarationsAndAssignments.ts, 169, 7), Decl(declarationsAndAssignments.ts, 177, 14))
>a3 : Symbol(a3, Decl(declarationsAndAssignments.ts, 173, 7), Decl(declarationsAndAssignments.ts, 177, 17))
}

View file

@ -24,7 +24,7 @@ function f0() {
>x : number
>y : string
>z : any
>[1, "hello"] : [number, string, undefined]
>[1, "hello"] : [number, string, undefined?]
>1 : 1
>"hello" : "hello"
@ -254,17 +254,17 @@ function f7() {
function f8() {
>f8 : () => void
var [a, b, c] = []; // Ok, [] is an array
var [a, b, c] = []; // Error, [] is an empty tuple
>a : any
>b : any
>c : any
>[] : [undefined, undefined, undefined]
>[] : [undefined?, undefined?, undefined?]
var [d, e, f] = [1]; // Error, [1] is a tuple
>d : number
>e : any
>f : any
>[1] : [number, undefined, undefined]
>[1] : [number, undefined?, undefined?]
>1 : 1
}
@ -681,9 +681,6 @@ function f19() {
function f20() {
>f20 : () => void
var a: number[];
>a : number[]
var x: number;
>x : number
@ -693,6 +690,12 @@ function f20() {
var z: number;
>z : number
var a: number[];
>a : number[]
var a3: any[];
>a3 : any[]
var [...a] = [1, 2, 3];
>a : number[]
>[1, 2, 3] : number[]
@ -703,7 +706,7 @@ function f20() {
var [x, ...a] = [1, 2, 3];
>x : number
>a : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@ -712,17 +715,17 @@ function f20() {
>x : number
>y : number
>a : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
var [x, y, z, ...a] = [1, 2, 3];
var [x, y, z, ...a3] = [1, 2, 3];
>x : number
>y : number
>z : number
>a : number[]
>[1, 2, 3] : number[]
>a3 : any[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@ -738,37 +741,37 @@ function f20() {
>3 : 3
[x, ...a] = [1, 2, 3];
>[x, ...a] = [1, 2, 3] : number[]
>[x, ...a] : number[]
>[x, ...a] = [1, 2, 3] : [number, number, number]
>[x, ...a] : [number, ...number[]]
>x : number
>...a : number
>a : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
[x, y, ...a] = [1, 2, 3];
>[x, y, ...a] = [1, 2, 3] : number[]
>[x, y, ...a] : number[]
>[x, y, ...a] = [1, 2, 3] : [number, number, number]
>[x, y, ...a] : [number, number, ...number[]]
>x : number
>y : number
>...a : number
>a : number[]
>[1, 2, 3] : number[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
[x, y, z, ...a] = [1, 2, 3];
>[x, y, z, ...a] = [1, 2, 3] : number[]
>[x, y, z, ...a] : number[]
[x, y, z, ...a3] = [1, 2, 3];
>[x, y, z, ...a3] = [1, 2, 3] : [number, number, number]
>[x, y, z, ...a3] : [number, number, number, ...any[]]
>x : number
>y : number
>z : number
>...a : number
>a : number[]
>[1, 2, 3] : number[]
>...a3 : any
>a3 : any[]
>[1, 2, 3] : [number, number, number]
>1 : 1
>2 : 2
>3 : 3
@ -777,94 +780,103 @@ function f20() {
function f21() {
>f21 : () => void
var a: (number | string | boolean)[];
>a : (string | number | boolean)[]
var x: number;
>x : number
var x: number | string | boolean;
>x : string | number | boolean
var y: string;
>y : string
var y: number | string | boolean;
>y : string | number | boolean
var z: boolean;
>z : boolean
var z: number | string | boolean;
>z : string | number | boolean
var a0: (number | string | boolean)[];
>a0 : (string | number | boolean)[]
var [...a] = [1, "hello", true];
>a : (string | number | boolean)[]
var a1: (string | boolean)[];
>a1 : (string | boolean)[]
var a2: boolean[];
>a2 : boolean[]
var a3: any[];
>a3 : any[]
var [...a0] = [1, "hello", true];
>a0 : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
>1 : 1
>"hello" : "hello"
>true : true
var [x, ...a] = [1, "hello", true];
>x : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
var [x, ...a1] = [1, "hello", true];
>x : number
>a1 : (string | boolean)[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
var [x, y, ...a] = [1, "hello", true];
>x : string | number | boolean
>y : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
var [x, y, ...a2] = [1, "hello", true];
>x : number
>y : string
>a2 : boolean[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
var [x, y, z, ...a] = [1, "hello", true];
>x : string | number | boolean
>y : string | number | boolean
>z : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | boolean)[]
var [x, y, z, ...a3] = [1, "hello", true];
>x : number
>y : string
>z : boolean
>a3 : any[]
>[1, "hello", true] : [number, string, boolean]
>1 : 1
>"hello" : "hello"
>true : true
[...a] = [1, "hello", true];
>[...a] = [1, "hello", true] : (string | number | true)[]
>[...a] : (string | number | boolean)[]
>...a : string | number | boolean
>a : (string | number | boolean)[]
[...a0] = [1, "hello", true];
>[...a0] = [1, "hello", true] : (string | number | true)[]
>[...a0] : (string | number | boolean)[]
>...a0 : string | number | boolean
>a0 : (string | number | boolean)[]
>[1, "hello", true] : (string | number | true)[]
>1 : 1
>"hello" : "hello"
>true : true
[x, ...a] = [1, "hello", true];
>[x, ...a] = [1, "hello", true] : (string | number | true)[]
>[x, ...a] : (string | number | boolean)[]
>x : string | number | boolean
>...a : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | true)[]
[x, ...a1] = [1, "hello", true];
>[x, ...a1] = [1, "hello", true] : [number, string, true]
>[x, ...a1] : [number, ...(string | boolean)[]]
>x : number
>...a1 : string | boolean
>a1 : (string | boolean)[]
>[1, "hello", true] : [number, string, true]
>1 : 1
>"hello" : "hello"
>true : true
[x, y, ...a] = [1, "hello", true];
>[x, y, ...a] = [1, "hello", true] : (string | number | true)[]
>[x, y, ...a] : (string | number | boolean)[]
>x : string | number | boolean
>y : string | number | boolean
>...a : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | true)[]
[x, y, ...a2] = [1, "hello", true];
>[x, y, ...a2] = [1, "hello", true] : [number, string, true]
>[x, y, ...a2] : [number, string, ...boolean[]]
>x : number
>y : string
>...a2 : boolean
>a2 : boolean[]
>[1, "hello", true] : [number, string, true]
>1 : 1
>"hello" : "hello"
>true : true
[x, y, z, ...a] = [1, "hello", true];
>[x, y, z, ...a] = [1, "hello", true] : (string | number | true)[]
>[x, y, z, ...a] : (string | number | boolean)[]
>x : string | number | boolean
>y : string | number | boolean
>z : string | number | boolean
>...a : string | number | boolean
>a : (string | number | boolean)[]
>[1, "hello", true] : (string | number | true)[]
[x, y, z, ...a3] = [1, "hello", true];
>[x, y, z, ...a3] = [1, "hello", true] : [number, string, true]
>[x, y, z, ...a3] : [number, string, boolean, ...any[]]
>x : number
>y : string
>z : boolean
>...a3 : any
>a3 : any[]
>[1, "hello", true] : [number, string, true]
>1 : 1
>"hello" : "hello"
>true : true

View file

@ -59,7 +59,7 @@ function f7() {
}
function f8() {
var [a, b, c] = []; // Ok, [] is an array
var [a, b, c] = []; // Error, [] is an empty tuple
var [d, e, f] = [1]; // Error, [1] is a tuple
}
@ -149,31 +149,35 @@ function f19() {
}
function f20() {
var a: number[];
var x: number;
var y: number;
var z: number;
var a: number[];
var a3: any[];
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];
var [x, y, z, ...a3] = [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];
[x, y, z, ...a3] = [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];
var x: number;
var y: string;
var z: boolean;
var a0: (number | string | boolean)[];
var a1: (string | boolean)[];
var a2: boolean[];
var a3: any[];
var [...a0] = [1, "hello", true];
var [x, ...a1] = [1, "hello", true];
var [x, y, ...a2] = [1, "hello", true];
var [x, y, z, ...a3] = [1, "hello", true];
[...a0] = [1, "hello", true];
[x, ...a1] = [1, "hello", true];
[x, y, ...a2] = [1, "hello", true];
[x, y, z, ...a3] = [1, "hello", true];
}