@@ -250,6 +250,21 @@ describe("verify", () => {
250250 ) ;
251251 } ) ;
252252
253+ it ( "type parameter scope (classes)" , ( ) => {
254+ verifyAndAssertMessages (
255+ unpad ( `
256+ T;
257+ class Foo<T> {}
258+ T;
259+ new Foo();
260+ ` ) ,
261+ { "no-unused-vars" : 1 , "no-undef" : 1 } ,
262+ [ "1:1 'T' is not defined. no-undef" ,
263+ "2:11 'T' is defined but never used. no-unused-vars" ,
264+ "3:1 'T' is not defined. no-undef" ]
265+ ) ;
266+ } ) ;
267+
253268 it ( "type parameter bounds (interfaces)" , ( ) => {
254269 verifyAndAssertMessages (
255270 unpad ( `
@@ -264,6 +279,21 @@ describe("verify", () => {
264279 ) ;
265280 } ) ;
266281
282+ it ( "type parameter scope (interfaces)" , ( ) => {
283+ verifyAndAssertMessages (
284+ unpad ( `
285+ T;
286+ interface Foo<T> {};
287+ T;
288+ Foo;
289+ ` ) ,
290+ { "no-unused-vars" : 1 , "no-undef" : 1 } ,
291+ [ "1:1 'T' is not defined. no-undef" ,
292+ "2:15 'T' is defined but never used. no-unused-vars" ,
293+ "3:1 'T' is not defined. no-undef" ]
294+ ) ;
295+ } ) ;
296+
267297 it ( "type parameter bounds (type aliases)" , ( ) => {
268298 verifyAndAssertMessages (
269299 unpad ( `
@@ -279,6 +309,21 @@ describe("verify", () => {
279309 ) ;
280310 } ) ;
281311
312+ it ( "type parameter scope (type aliases)" , ( ) => {
313+ verifyAndAssertMessages (
314+ unpad ( `
315+ T;
316+ type Foo<T> = {};
317+ T;
318+ Foo;
319+ ` ) ,
320+ { "no-unused-vars" : 1 , "no-undef" : 1 } ,
321+ [ "1:1 'T' is not defined. no-undef" ,
322+ "2:10 'T' is defined but never used. no-unused-vars" ,
323+ "3:1 'T' is not defined. no-undef" ]
324+ ) ;
325+ } ) ;
326+
282327 it ( "type parameter bounds (functions)" , ( ) => {
283328 verifyAndAssertMessages (
284329 unpad ( `
@@ -292,6 +337,21 @@ describe("verify", () => {
292337 ) ;
293338 } ) ;
294339
340+ it ( "type parameter scope (functions)" , ( ) => {
341+ verifyAndAssertMessages (
342+ unpad ( `
343+ T;
344+ function log<T>() {}
345+ T;
346+ log;
347+ ` ) ,
348+ { "no-unused-vars" : 1 , "no-undef" : 1 } ,
349+ [ "1:1 'T' is not defined. no-undef" ,
350+ "2:14 'T' is defined but never used. no-unused-vars" ,
351+ "3:1 'T' is not defined. no-undef" ]
352+ ) ;
353+ } ) ;
354+
295355 it ( "nested type annotations" , ( ) => {
296356 verifyAndAssertMessages (
297357 unpad ( `
0 commit comments