Skip to content

Commit 56d3b46

Browse files
timothykangJamesHenry
authored andcommitted
Fix: Mark call expression type parameters as used (typescript-eslint#89)
1 parent a4362e7 commit 56d3b46

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

Diff for: packages/eslint-plugin-typescript/lib/rules/no-unused-vars.js

+8
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,14 @@ module.exports = {
271271
FunctionExpression: markFunctionReturnTypeAsUsed,
272272
ArrowFunctionExpression: markFunctionReturnTypeAsUsed,
273273

274+
CallExpression(node) {
275+
if (node.typeParameters && node.typeParameters.params) {
276+
node.typeParameters.params.forEach(
277+
markTypeAnnotationAsUsed
278+
);
279+
}
280+
},
281+
274282
Decorator: markDecoratorAsUsed,
275283
TSInterfaceHeritage: markExtendedInterfaceAsUsed,
276284

Diff for: packages/eslint-plugin-typescript/tests/lib/rules/no-unused-vars.js

+45
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,36 @@ ruleTester.run("no-unused-vars", ruleNoUnusedVars, {
184184
].join("\n"),
185185
parser
186186
},
187+
{
188+
code: [
189+
"import { Foo } from 'foo'",
190+
"function bar<T>() {}",
191+
"bar<Foo>()"
192+
].join("\n"),
193+
parser
194+
},
195+
{
196+
code: [
197+
"import { Foo } from 'foo'",
198+
"const bar = function <T>() {}",
199+
"bar<Foo>()"
200+
].join("\n"),
201+
parser
202+
},
203+
{
204+
code: [
205+
"import { Foo } from 'foo'",
206+
"const bar = <T>() => {}",
207+
"bar<Foo>()"
208+
].join("\n"),
209+
parser
210+
},
211+
{
212+
code: ["import { Foo } from 'foo'", "<Foo>(<T>() => {})()"].join(
213+
"\n"
214+
),
215+
parser
216+
},
187217
{
188218
code: [
189219
"import { Nullable } from 'nullable'",
@@ -469,6 +499,21 @@ ruleTester.run("no-unused-vars", ruleNoUnusedVars, {
469499
}
470500
]
471501
},
502+
{
503+
code: [
504+
"import { Foo, Bar } from 'foo';",
505+
"function baz<Foo>() {}",
506+
"baz<Bar>()"
507+
].join("\n"),
508+
parser,
509+
errors: [
510+
{
511+
message: "'Foo' is defined but never used.",
512+
line: 1,
513+
column: 10
514+
}
515+
]
516+
},
472517
{
473518
code: [
474519
"import { Nullable } from 'nullable';",

0 commit comments

Comments
 (0)