From 09be5377869041412a222d10be5ddb60ed7d4d29 Mon Sep 17 00:00:00 2001 From: Dick van den Brink Date: Thu, 22 Jun 2017 16:41:40 +0200 Subject: [PATCH 1/2] Also check TypeAlias for unused type parameters Fixes #15208 --- src/compiler/checker.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 05c20ffb11a..e5c63cbd50c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -19426,6 +19426,9 @@ namespace ts { case SyntaxKind.ConstructorType: checkUnusedTypeParameters(node); break; + case SyntaxKind.TypeAliasDeclaration: + checkUnusedTypeParameters(node); + break; } } } @@ -19503,7 +19506,7 @@ namespace ts { } } - function checkUnusedTypeParameters(node: ClassDeclaration | ClassExpression | FunctionDeclaration | MethodDeclaration | FunctionExpression | ArrowFunction | ConstructorDeclaration | SignatureDeclaration | InterfaceDeclaration) { + function checkUnusedTypeParameters(node: ClassDeclaration | ClassExpression | FunctionDeclaration | MethodDeclaration | FunctionExpression | ArrowFunction | ConstructorDeclaration | SignatureDeclaration | InterfaceDeclaration | TypeAliasDeclaration) { if (compilerOptions.noUnusedLocals && !isInAmbientContext(node)) { if (node.typeParameters) { // Only report errors on the last declaration for the type parameter container; @@ -21208,6 +21211,7 @@ namespace ts { checkTypeNameIsReserved(node.name, Diagnostics.Type_alias_name_cannot_be_0); checkTypeParameters(node.typeParameters); checkSourceElement(node.type); + registerForUnusedIdentifiersCheck(node); } function computeEnumMemberValues(node: EnumDeclaration) { From 33224747b33ddf6218bdf1e9006ff9bd87902cab Mon Sep 17 00:00:00 2001 From: Dick van den Brink Date: Thu, 22 Jun 2017 16:45:09 +0200 Subject: [PATCH 2/2] Added test for unused typeparameters in a typealias declaration --- .../reference/unusedTypeParameters10.errors.txt | 9 +++++++++ tests/baselines/reference/unusedTypeParameters10.js | 6 ++++++ tests/cases/compiler/unusedTypeParameters10.ts | 5 +++++ 3 files changed, 20 insertions(+) create mode 100644 tests/baselines/reference/unusedTypeParameters10.errors.txt create mode 100644 tests/baselines/reference/unusedTypeParameters10.js create mode 100644 tests/cases/compiler/unusedTypeParameters10.ts diff --git a/tests/baselines/reference/unusedTypeParameters10.errors.txt b/tests/baselines/reference/unusedTypeParameters10.errors.txt new file mode 100644 index 00000000000..7bfd5676df3 --- /dev/null +++ b/tests/baselines/reference/unusedTypeParameters10.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/unusedTypeParameters10.ts(1,12): error TS6133: 'T' is declared but never used. + + +==== tests/cases/compiler/unusedTypeParameters10.ts (1 errors) ==== + type Alias = { }; + ~ +!!! error TS6133: 'T' is declared but never used. + type Alias2 = { x: T }; + \ No newline at end of file diff --git a/tests/baselines/reference/unusedTypeParameters10.js b/tests/baselines/reference/unusedTypeParameters10.js new file mode 100644 index 00000000000..5738e6f48e8 --- /dev/null +++ b/tests/baselines/reference/unusedTypeParameters10.js @@ -0,0 +1,6 @@ +//// [unusedTypeParameters10.ts] +type Alias = { }; +type Alias2 = { x: T }; + + +//// [unusedTypeParameters10.js] diff --git a/tests/cases/compiler/unusedTypeParameters10.ts b/tests/cases/compiler/unusedTypeParameters10.ts new file mode 100644 index 00000000000..cda482e5bdc --- /dev/null +++ b/tests/cases/compiler/unusedTypeParameters10.ts @@ -0,0 +1,5 @@ +//@noUnusedLocals:true +//@noUnusedParameters:true + +type Alias = { }; +type Alias2 = { x: T };