@@ -214,3 +214,236 @@ ruleTester.run("class-methods-use-this", rule, {
214
214
}
215
215
]
216
216
} ) ;
217
+
218
+ const ruleTesterTypeScript = new RuleTester ( {
219
+ languageOptions : {
220
+ parser : require ( "@typescript-eslint/parser" )
221
+ }
222
+ } ) ;
223
+
224
+ ruleTesterTypeScript . run ( "class-methods-use-this" , rule , {
225
+ valid : [
226
+ "class A { constructor() {} }" ,
227
+ "class A { foo() {this} }" ,
228
+ "class A { foo() {this.bar = 'bar';} }" ,
229
+ "class A { foo() {bar(this);} }" ,
230
+ "class A extends B { foo() {super.foo();} }" ,
231
+ "class A { foo() { if(true) { return this; } } }" ,
232
+ "class A { static foo() {} }" ,
233
+ "({ a(){} });" ,
234
+ "class A { foo() { () => this; } }" ,
235
+ "({ a: function () {} });" ,
236
+ { code : "class A { foo() {this} bar() {} }" , options : [ { exceptMethods : [ "bar" ] } ] } ,
237
+ { code : "class A { \"foo\"() { } }" , options : [ { exceptMethods : [ "foo" ] } ] } ,
238
+ { code : "class A { 42() { } }" , options : [ { exceptMethods : [ "42" ] } ] } ,
239
+ "class A { foo = function() {this} }" ,
240
+ "class A { foo = () => {this} }" ,
241
+ "class A { foo = () => {super.toString} }" ,
242
+ "class A { static foo = function() {} }" ,
243
+ "class A { static foo = () => {} }" ,
244
+ { code : "class A { #bar() {} }" , options : [ { exceptMethods : [ "#bar" ] } ] } ,
245
+ { code : "class A { foo = function () {} }" , options : [ { enforceForClassFields : false } ] } ,
246
+ { code : "class A { foo = () => {} }" , options : [ { enforceForClassFields : false } ] } ,
247
+ "class A { foo() { return class { [this.foo] = 1 }; } }" ,
248
+ "class A { static {} }"
249
+ ] ,
250
+ invalid : [
251
+ {
252
+ code : `
253
+ class Foo {
254
+ method() {}
255
+ }
256
+ ` ,
257
+ errors : [
258
+ {
259
+ messageId : "missingThis"
260
+ }
261
+ ]
262
+ } ,
263
+ {
264
+ code : `
265
+ class Foo {
266
+ private method() {}
267
+ }
268
+ ` ,
269
+ errors : [
270
+ {
271
+ messageId : "missingThis"
272
+ }
273
+ ]
274
+ } ,
275
+ {
276
+ code : `
277
+ class Foo {
278
+ protected method() {}
279
+ }
280
+ ` ,
281
+ errors : [
282
+ {
283
+ messageId : "missingThis"
284
+ }
285
+ ]
286
+ } ,
287
+ {
288
+ code : `
289
+ class Derived extends Base {
290
+ override method() {}
291
+ }
292
+ ` ,
293
+ errors : [
294
+ {
295
+ messageId : "missingThis"
296
+ }
297
+ ]
298
+ } ,
299
+ {
300
+ code : `
301
+ class Derived extends Base {
302
+ property = () => {}
303
+ }
304
+ ` ,
305
+ errors : [
306
+ {
307
+ messageId : "missingThis"
308
+ }
309
+ ]
310
+ } ,
311
+ {
312
+ code : `
313
+ class Derived extends Base {
314
+ public property = () => {}
315
+ }
316
+ ` ,
317
+ errors : [
318
+ {
319
+ messageId : "missingThis"
320
+ }
321
+ ]
322
+ } ,
323
+ {
324
+ code : `
325
+ class Derived extends Base {
326
+ override property = () => {}
327
+ }
328
+ ` ,
329
+ errors : [
330
+ {
331
+ messageId : "missingThis"
332
+ }
333
+ ]
334
+ } ,
335
+ {
336
+ code : `
337
+ class Foo {
338
+ #method() {}
339
+ }
340
+ ` ,
341
+ errors : [
342
+ {
343
+ messageId : "missingThis"
344
+ }
345
+ ]
346
+ } ,
347
+ {
348
+ code : `
349
+ class Foo {
350
+ get getter(): number {}
351
+ }
352
+ ` ,
353
+ errors : [
354
+ {
355
+ messageId : "missingThis"
356
+ }
357
+ ]
358
+ } ,
359
+ {
360
+ code : `
361
+ class Foo {
362
+ private get getter(): number {}
363
+ }
364
+ ` ,
365
+ errors : [
366
+ {
367
+ messageId : "missingThis"
368
+ }
369
+ ]
370
+ } ,
371
+ {
372
+ code : `
373
+ class Foo {
374
+ protected get getter(): number {}
375
+ }
376
+ ` ,
377
+ errors : [
378
+ {
379
+ messageId : "missingThis"
380
+ }
381
+ ]
382
+ } ,
383
+ {
384
+ code : `
385
+ class Foo {
386
+ get #getter(): number {}
387
+ }
388
+ ` ,
389
+ errors : [
390
+ {
391
+ messageId : "missingThis"
392
+ }
393
+ ]
394
+ } ,
395
+ {
396
+ code : `
397
+ class Foo {
398
+ private set setter(b: number) {}
399
+ }
400
+ ` ,
401
+ errors : [
402
+ {
403
+ messageId : "missingThis"
404
+ }
405
+ ]
406
+ } ,
407
+ {
408
+ code : `
409
+ class Foo {
410
+ protected set setter(b: number) {}
411
+ }
412
+ ` ,
413
+ errors : [
414
+ {
415
+ messageId : "missingThis"
416
+ }
417
+ ]
418
+ } ,
419
+ {
420
+ code : `
421
+ class Foo {
422
+ set #setter(b: number) {}
423
+ }
424
+ ` ,
425
+ errors : [
426
+ {
427
+ messageId : "missingThis"
428
+ }
429
+ ]
430
+ } ,
431
+
432
+ {
433
+ code : `
434
+ function fn() {
435
+ this.foo = 303;
436
+
437
+ class Foo {
438
+ method() {}
439
+ }
440
+ }
441
+ ` ,
442
+ errors : [
443
+ {
444
+ messageId : "missingThis"
445
+ }
446
+ ]
447
+ }
448
+ ]
449
+ } ) ;
0 commit comments