From 639190d607f6ccdad78d38fde4d95accde2df9c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=87=E7=92=90?= Date: Tue, 7 Aug 2018 10:09:26 +0800 Subject: [PATCH] fix compiler crash (#26209) --- src/compiler/checker.ts | 6 ++-- .../unusedLocalsAndParameters.errors.txt | 28 +++++++++++-------- .../reference/unusedLocalsAndParameters.js | 7 ++++- .../unusedLocalsAndParameters.symbols | 9 +++++- .../reference/unusedLocalsAndParameters.types | 12 +++++++- .../compiler/unusedLocalsAndParameters.ts | 4 ++- 6 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1c1eebd94e4..d49beedd9c0 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -23958,13 +23958,13 @@ namespace ts { } else { addDiagnostic(bindingPattern, kind, bindingElements.length === 1 - ? createDiagnosticForNode(bindingPattern, Diagnostics._0_is_declared_but_its_value_is_never_read, idText(cast(first(bindingElements).name, isIdentifier))) + ? createDiagnosticForNode(bindingPattern, Diagnostics._0_is_declared_but_its_value_is_never_read, bindingNameText(first(bindingElements).name)) : createDiagnosticForNode(bindingPattern, Diagnostics.All_destructured_elements_are_unused)); } } else { for (const e of bindingElements) { - addDiagnostic(e, kind, createDiagnosticForNode(e, Diagnostics._0_is_declared_but_its_value_is_never_read, idText(cast(e.name, isIdentifier)))); + addDiagnostic(e, kind, createDiagnosticForNode(e, Diagnostics._0_is_declared_but_its_value_is_never_read, bindingNameText(e.name))); } } }); @@ -23976,7 +23976,7 @@ namespace ts { } else { for (const decl of declarations) { - addDiagnostic(decl, UnusedKind.Local, createDiagnosticForNode(decl, Diagnostics._0_is_declared_but_its_value_is_never_read, idText(cast(decl.name, isIdentifier)))); + addDiagnostic(decl, UnusedKind.Local, createDiagnosticForNode(decl, Diagnostics._0_is_declared_but_its_value_is_never_read, bindingNameText(decl.name))); } } }); diff --git a/tests/baselines/reference/unusedLocalsAndParameters.errors.txt b/tests/baselines/reference/unusedLocalsAndParameters.errors.txt index 2b07a5fac52..3b7eaa23e22 100644 --- a/tests/baselines/reference/unusedLocalsAndParameters.errors.txt +++ b/tests/baselines/reference/unusedLocalsAndParameters.errors.txt @@ -4,14 +4,11 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(15,5): error TS6133: 'farrow' tests/cases/compiler/unusedLocalsAndParameters.ts(15,15): error TS6133: 'a' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(18,7): error TS6196: 'C' is declared but never used. tests/cases/compiler/unusedLocalsAndParameters.ts(20,12): error TS6133: 'a' is declared but its value is never read. -tests/cases/compiler/unusedLocalsAndParameters.ts(23,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/unusedLocalsAndParameters.ts(23,11): error TS6133: 'v' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(27,5): error TS6133: 'E' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(29,12): error TS6133: 'a' is declared but its value is never read. -tests/cases/compiler/unusedLocalsAndParameters.ts(32,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/unusedLocalsAndParameters.ts(32,11): error TS6133: 'v' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(38,12): error TS6133: 'a' is declared but its value is never read. -tests/cases/compiler/unusedLocalsAndParameters.ts(41,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/unusedLocalsAndParameters.ts(41,11): error TS6133: 'v' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(48,10): error TS6133: 'i' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(52,10): error TS6133: 'i' is declared but its value is never read. @@ -22,9 +19,13 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(71,11): error TS6133: 'c' is d tests/cases/compiler/unusedLocalsAndParameters.ts(74,11): error TS6133: 'c' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(79,11): error TS6133: 'N' is declared but its value is never read. tests/cases/compiler/unusedLocalsAndParameters.ts(80,9): error TS6133: 'x' is declared but its value is never read. +tests/cases/compiler/unusedLocalsAndParameters.ts(83,13): error TS2304: Cannot find name 'y'. +tests/cases/compiler/unusedLocalsAndParameters.ts(83,14): error TS1005: ',' expected. +tests/cases/compiler/unusedLocalsAndParameters.ts(84,6): error TS1005: ',' expected. +tests/cases/compiler/unusedLocalsAndParameters.ts(85,1): error TS1109: Expression expected. -==== tests/cases/compiler/unusedLocalsAndParameters.ts (24 errors) ==== +==== tests/cases/compiler/unusedLocalsAndParameters.ts (25 errors) ==== export { }; // function declaration paramter @@ -60,8 +61,6 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(80,9): error TS6133: 'x' is de } // Accessor declaration paramter set x(v: number) { - ~ -!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. ~ !!! error TS6133: 'v' is declared but its value is never read. } @@ -77,8 +76,6 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(80,9): error TS6133: 'x' is de } // Accessor declaration paramter set x(v: number) { - ~ -!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. ~ !!! error TS6133: 'v' is declared but its value is never read. } @@ -92,8 +89,6 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(80,9): error TS6133: 'x' is de }, // Accessor declaration paramter set x(v: number) { - ~ -!!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. ~ !!! error TS6133: 'v' is declared but its value is never read. } @@ -155,4 +150,15 @@ tests/cases/compiler/unusedLocalsAndParameters.ts(80,9): error TS6133: 'x' is de !!! error TS6133: 'x' is declared but its value is never read. } - \ No newline at end of file + for (let x: y) { + ~ +!!! error TS2304: Cannot find name 'y'. + ~ +!!! error TS1005: ',' expected. + z(x); + ~ +!!! error TS1005: ',' expected. + } + ~ +!!! error TS1109: Expression expected. + \ No newline at end of file diff --git a/tests/baselines/reference/unusedLocalsAndParameters.js b/tests/baselines/reference/unusedLocalsAndParameters.js index c66040cf50f..5039a9c1712 100644 --- a/tests/baselines/reference/unusedLocalsAndParameters.js +++ b/tests/baselines/reference/unusedLocalsAndParameters.js @@ -81,7 +81,10 @@ namespace N { var x; } - +for (let x: y) { + z(x); +} + //// [unusedLocalsAndParameters.js] "use strict"; @@ -166,3 +169,5 @@ var N; (function (N) { var x; })(N || (N = {})); +for (var x = void 0, z = (void 0).z; (x); ) + ; diff --git a/tests/baselines/reference/unusedLocalsAndParameters.symbols b/tests/baselines/reference/unusedLocalsAndParameters.symbols index e44444e5843..af9dc0f5242 100644 --- a/tests/baselines/reference/unusedLocalsAndParameters.symbols +++ b/tests/baselines/reference/unusedLocalsAndParameters.symbols @@ -131,4 +131,11 @@ namespace N { >x : Symbol(x, Decl(unusedLocalsAndParameters.ts, 79, 7)) } - +for (let x: y) { +>x : Symbol(x, Decl(unusedLocalsAndParameters.ts, 82, 8)) + + z(x); +>z : Symbol(z, Decl(unusedLocalsAndParameters.ts, 82, 16)) +>x : Symbol(x, Decl(unusedLocalsAndParameters.ts, 82, 8)) +} + diff --git a/tests/baselines/reference/unusedLocalsAndParameters.types b/tests/baselines/reference/unusedLocalsAndParameters.types index 5a5497b26c6..6b5ba0c6c70 100644 --- a/tests/baselines/reference/unusedLocalsAndParameters.types +++ b/tests/baselines/reference/unusedLocalsAndParameters.types @@ -152,4 +152,14 @@ namespace N { >x : any } - +for (let x: y) { +>x : any + + z(x); +>z : any +>(x) : any +>x : any +} +> : any +> : any + diff --git a/tests/cases/compiler/unusedLocalsAndParameters.ts b/tests/cases/compiler/unusedLocalsAndParameters.ts index 1f4fc944ff4..a3cab013b7e 100644 --- a/tests/cases/compiler/unusedLocalsAndParameters.ts +++ b/tests/cases/compiler/unusedLocalsAndParameters.ts @@ -83,4 +83,6 @@ namespace N { var x; } - \ No newline at end of file +for (let x: y) { + z(x); +}