From cdf92949bec4686a74233ae49b6a28ff99b12cbd Mon Sep 17 00:00:00 2001 From: quentin-jaquier-sonarsource <43733433+quentin-jaquier-sonarsource@users.noreply.github.com> Date: Tue, 24 Sep 2019 17:46:00 +0200 Subject: [PATCH] fix(eslint-plugin): [no-unnec-type-arg] undefined symbol crash (#1007) --- .../src/rules/no-unnecessary-type-arguments.ts | 7 ++++++- .../tests/rules/no-unnecessary-type-arguments.test.ts | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts b/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts index 040650ea05d..12d9c041dfe 100644 --- a/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts +++ b/packages/eslint-plugin/src/rules/no-unnecessary-type-arguments.ts @@ -121,7 +121,12 @@ function getTypeParametersFromType( type: ts.EntityName | ts.Expression | ts.ClassDeclaration, checker: ts.TypeChecker, ): readonly ts.TypeParameterDeclaration[] | undefined { - const sym = getAliasedSymbol(checker.getSymbolAtLocation(type)!, checker); + const symAtLocation = checker.getSymbolAtLocation(type); + if (symAtLocation === undefined) { + return undefined; + } + + const sym = getAliasedSymbol(symAtLocation, checker); if (sym === undefined || sym.declarations === undefined) { return undefined; } diff --git a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts index d6ea679f823..7bb37deda8f 100644 --- a/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts +++ b/packages/eslint-plugin/tests/rules/no-unnecessary-type-arguments.test.ts @@ -52,6 +52,7 @@ ruleTester.run('no-unnecessary-type-arguments', rule, { class D extends C { }`, `declare const C: unknown; class D extends C { }`, + `let a: A`, ], invalid: [ {