From 8dcf8a648995fc761d8298a942c7bd2965b4390e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Wed, 31 Jan 2018 10:43:14 -0800 Subject: [PATCH] Add semicolon to unused class member list (#21495) Turns out SemicolonClassElement is a specific kind for semicolons inside a class. Having one of them with --noUnusedLocals on would crash the compiler after the assert added in #21013. --- src/compiler/checker.ts | 1 + tests/baselines/reference/unusedSemicolonInClass.js | 13 +++++++++++++ .../reference/unusedSemicolonInClass.symbols | 7 +++++++ .../reference/unusedSemicolonInClass.types | 7 +++++++ tests/cases/compiler/unusedSemicolonInClass.ts | 4 ++++ 5 files changed, 32 insertions(+) create mode 100644 tests/baselines/reference/unusedSemicolonInClass.js create mode 100644 tests/baselines/reference/unusedSemicolonInClass.symbols create mode 100644 tests/baselines/reference/unusedSemicolonInClass.types create mode 100644 tests/cases/compiler/unusedSemicolonInClass.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f0208518c77..07ceaa13563 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -21031,6 +21031,7 @@ namespace ts { } break; case SyntaxKind.IndexSignature: + case SyntaxKind.SemicolonClassElement: // Can't be private break; default: diff --git a/tests/baselines/reference/unusedSemicolonInClass.js b/tests/baselines/reference/unusedSemicolonInClass.js new file mode 100644 index 00000000000..c33f799fec4 --- /dev/null +++ b/tests/baselines/reference/unusedSemicolonInClass.js @@ -0,0 +1,13 @@ +//// [unusedSemicolonInClass.ts] +class Unused { + ; +} + + +//// [unusedSemicolonInClass.js] +var Unused = /** @class */ (function () { + function Unused() { + } + ; + return Unused; +}()); diff --git a/tests/baselines/reference/unusedSemicolonInClass.symbols b/tests/baselines/reference/unusedSemicolonInClass.symbols new file mode 100644 index 00000000000..0e1832d1f3a --- /dev/null +++ b/tests/baselines/reference/unusedSemicolonInClass.symbols @@ -0,0 +1,7 @@ +=== tests/cases/compiler/unusedSemicolonInClass.ts === +class Unused { +>Unused : Symbol(Unused, Decl(unusedSemicolonInClass.ts, 0, 0)) + + ; +} + diff --git a/tests/baselines/reference/unusedSemicolonInClass.types b/tests/baselines/reference/unusedSemicolonInClass.types new file mode 100644 index 00000000000..118259662f4 --- /dev/null +++ b/tests/baselines/reference/unusedSemicolonInClass.types @@ -0,0 +1,7 @@ +=== tests/cases/compiler/unusedSemicolonInClass.ts === +class Unused { +>Unused : Unused + + ; +} + diff --git a/tests/cases/compiler/unusedSemicolonInClass.ts b/tests/cases/compiler/unusedSemicolonInClass.ts new file mode 100644 index 00000000000..5cd62690ba9 --- /dev/null +++ b/tests/cases/compiler/unusedSemicolonInClass.ts @@ -0,0 +1,4 @@ +// @noUnusedLocals: true +class Unused { + ; +}