From c2310009e1c596735cba5d2181d889ac3d32d758 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Thu, 21 Jun 2018 17:02:35 -1000 Subject: [PATCH] Update tests --- .../declarationsAndAssignments.errors.txt | 36 ++-- .../reference/declarationsAndAssignments.js | 66 ++++--- .../declarationsAndAssignments.symbols | 144 ++++++++------- .../declarationsAndAssignments.types | 168 ++++++++++-------- .../declarationsAndAssignments.ts | 36 ++-- 5 files changed, 245 insertions(+), 205 deletions(-) diff --git a/tests/baselines/reference/declarationsAndAssignments.errors.txt b/tests/baselines/reference/declarationsAndAssignments.errors.txt index 64bd8d7e57..920f995ef3 100644 --- a/tests/baselines/reference/declarationsAndAssignments.errors.txt +++ b/tests/baselines/reference/declarationsAndAssignments.errors.txt @@ -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]; } \ No newline at end of file diff --git a/tests/baselines/reference/declarationsAndAssignments.js b/tests/baselines/reference/declarationsAndAssignments.js index 74d7cd9415..b4bba24128 100644 --- a/tests/baselines/reference/declarationsAndAssignments.js +++ b/tests/baselines/reference/declarationsAndAssignments.js @@ -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); } diff --git a/tests/baselines/reference/declarationsAndAssignments.symbols b/tests/baselines/reference/declarationsAndAssignments.symbols index 60518a541f..900d255345 100644 --- a/tests/baselines/reference/declarationsAndAssignments.symbols +++ b/tests/baselines/reference/declarationsAndAssignments.symbols @@ -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)) } diff --git a/tests/baselines/reference/declarationsAndAssignments.types b/tests/baselines/reference/declarationsAndAssignments.types index 10571cf431..602ffbd76e 100644 --- a/tests/baselines/reference/declarationsAndAssignments.types +++ b/tests/baselines/reference/declarationsAndAssignments.types @@ -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 diff --git a/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts b/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts index 69b7462cd0..e45df9c45d 100644 --- a/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts +++ b/tests/cases/conformance/es6/destructuring/declarationsAndAssignments.ts @@ -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]; }