@@ -23,7 +23,24 @@ ruleTester.run("no-useless-computed-key", rule, {
2323 "({ 'a': 0, b(){} })" ,
2424 "({ [x]: 0 });" ,
2525 "({ a: 0, [b](){} })" ,
26- "({ ['__proto__']: [] })"
26+ "({ ['__proto__']: [] })" ,
27+ { code : "class Foo { a() {} }" , options : [ { enforceForClassMembers : true } ] } ,
28+ { code : "class Foo { 'a'() {} }" , options : [ { enforceForClassMembers : true } ] } ,
29+ { code : "class Foo { [x]() {} }" , options : [ { enforceForClassMembers : true } ] } ,
30+ { code : "class Foo { ['constructor']() {} }" , options : [ { enforceForClassMembers : true } ] } ,
31+ { code : "class Foo { static ['prototype']() {} }" , options : [ { enforceForClassMembers : true } ] } ,
32+ { code : "(class { 'a'() {} })" , options : [ { enforceForClassMembers : true } ] } ,
33+ { code : "(class { [x]() {} })" , options : [ { enforceForClassMembers : true } ] } ,
34+ { code : "(class { ['constructor']() {} })" , options : [ { enforceForClassMembers : true } ] } ,
35+ { code : "(class { static ['prototype']() {} })" , options : [ { enforceForClassMembers : true } ] } ,
36+ "class Foo { ['x']() {} }" ,
37+ "(class { ['x']() {} })" ,
38+ "class Foo { static ['constructor']() {} }" ,
39+ "class Foo { ['prototype']() {} }" ,
40+ { code : "class Foo { ['x']() {} }" , options : [ { enforceForClassMembers : false } ] } ,
41+ { code : "(class { ['x']() {} })" , options : [ { enforceForClassMembers : false } ] } ,
42+ { code : "class Foo { static ['constructor']() {} }" , options : [ { enforceForClassMembers : false } ] } ,
43+ { code : "class Foo { ['prototype']() {} }" , options : [ { enforceForClassMembers : false } ] }
2744 ] ,
2845 invalid : [
2946 {
@@ -168,6 +185,192 @@ ruleTester.run("no-useless-computed-key", rule, {
168185 errors : [ {
169186 message : "Unnecessarily computed property [2] found." , type : "Property"
170187 } ]
188+ } , {
189+ code : "class Foo { ['0']() {} }" ,
190+ output : "class Foo { '0'() {} }" ,
191+ options : [ { enforceForClassMembers : true } ] ,
192+ errors : [ {
193+ message : "Unnecessarily computed property ['0'] found." , type : "MethodDefinition"
194+ } ]
195+ } , {
196+ code : "class Foo { ['0+1,234']() {} }" ,
197+ output : "class Foo { '0+1,234'() {} }" ,
198+ options : [ { enforceForClassMembers : true } ] ,
199+ errors : [ {
200+ message : "Unnecessarily computed property ['0+1,234'] found." , type : "MethodDefinition"
201+ } ]
202+ } , {
203+ code : "class Foo { ['x']() {} }" ,
204+ output : "class Foo { 'x'() {} }" ,
205+ options : [ { enforceForClassMembers : true } ] ,
206+ errors : [ {
207+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
208+ } ]
209+ } , {
210+ code : "class Foo { [/* this comment prevents a fix */ 'x']() {} }" ,
211+ output : null ,
212+ options : [ { enforceForClassMembers : true } ] ,
213+ errors : [ {
214+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
215+ } ]
216+ } , {
217+ code : "class Foo { ['x' /* this comment also prevents a fix */]() {} }" ,
218+ output : null ,
219+ options : [ { enforceForClassMembers : true } ] ,
220+ errors : [ {
221+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
222+ } ]
223+ } , {
224+ code : "class Foo { [('x')]() {} }" ,
225+ output : "class Foo { 'x'() {} }" ,
226+ options : [ { enforceForClassMembers : true } ] ,
227+ errors : [ {
228+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
229+ } ]
230+ } , {
231+ code : "class Foo { *['x']() {} }" ,
232+ output : "class Foo { *'x'() {} }" ,
233+ options : [ { enforceForClassMembers : true } ] ,
234+ errors : [ {
235+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
236+ } ]
237+ } , {
238+ code : "class Foo { async ['x']() {} }" ,
239+ output : "class Foo { async 'x'() {} }" ,
240+ options : [ { enforceForClassMembers : true } ] ,
241+ parserOptions : { ecmaVersion : 8 } ,
242+ errors : [ {
243+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
244+ } ]
245+ } , {
246+ code : "class Foo { get[.2]() {} }" ,
247+ output : "class Foo { get.2() {} }" ,
248+ options : [ { enforceForClassMembers : true } ] ,
249+ errors : [ {
250+ message : "Unnecessarily computed property [.2] found." , type : "MethodDefinition"
251+ } ]
252+ } , {
253+ code : "class Foo { set[.2](value) {} }" ,
254+ output : "class Foo { set.2(value) {} }" ,
255+ options : [ { enforceForClassMembers : true } ] ,
256+ errors : [ {
257+ message : "Unnecessarily computed property [.2] found." , type : "MethodDefinition"
258+ } ]
259+ } , {
260+ code : "class Foo { async[.2]() {} }" ,
261+ output : "class Foo { async.2() {} }" ,
262+ options : [ { enforceForClassMembers : true } ] ,
263+ parserOptions : { ecmaVersion : 8 } ,
264+ errors : [ {
265+ message : "Unnecessarily computed property [.2] found." , type : "MethodDefinition"
266+ } ]
267+ } , {
268+ code : "class Foo { [2]() {} }" ,
269+ output : "class Foo { 2() {} }" ,
270+ options : [ { enforceForClassMembers : true } ] ,
271+ errors : [ {
272+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
273+ } ]
274+ } , {
275+ code : "class Foo { get [2]() {} }" ,
276+ output : "class Foo { get 2() {} }" ,
277+ options : [ { enforceForClassMembers : true } ] ,
278+ errors : [ {
279+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
280+ } ]
281+ } , {
282+ code : "class Foo { set [2](value) {} }" ,
283+ output : "class Foo { set 2(value) {} }" ,
284+ options : [ { enforceForClassMembers : true } ] ,
285+ errors : [ {
286+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
287+ } ]
288+ } , {
289+ code : "class Foo { async [2]() {} }" ,
290+ output : "class Foo { async 2() {} }" ,
291+ options : [ { enforceForClassMembers : true } ] ,
292+ parserOptions : { ecmaVersion : 8 } ,
293+ errors : [ {
294+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
295+ } ]
296+ } , {
297+ code : "class Foo { get[2]() {} }" ,
298+ output : "class Foo { get 2() {} }" ,
299+ options : [ { enforceForClassMembers : true } ] ,
300+ errors : [ {
301+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
302+ } ]
303+ } , {
304+ code : "class Foo { set[2](value) {} }" ,
305+ output : "class Foo { set 2(value) {} }" ,
306+ options : [ { enforceForClassMembers : true } ] ,
307+ errors : [ {
308+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
309+ } ]
310+ } , {
311+ code : "class Foo { async[2]() {} }" ,
312+ output : "class Foo { async 2() {} }" ,
313+ options : [ { enforceForClassMembers : true } ] ,
314+ parserOptions : { ecmaVersion : 8 } ,
315+ errors : [ {
316+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
317+ } ]
318+ } , {
319+ code : "class Foo { get['foo']() {} }" ,
320+ output : "class Foo { get'foo'() {} }" ,
321+ options : [ { enforceForClassMembers : true } ] ,
322+ errors : [ {
323+ message : "Unnecessarily computed property ['foo'] found." , type : "MethodDefinition"
324+ } ]
325+ } , {
326+ code : "class Foo { *[2]() {} }" ,
327+ output : "class Foo { *2() {} }" ,
328+ options : [ { enforceForClassMembers : true } ] ,
329+ errors : [ {
330+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
331+ } ]
332+ } , {
333+ code : "class Foo { async*[2]() {} }" ,
334+ output : "class Foo { async*2() {} }" ,
335+ options : [ { enforceForClassMembers : true } ] ,
336+ errors : [ {
337+ message : "Unnecessarily computed property [2] found." , type : "MethodDefinition"
338+ } ]
339+ } , {
340+ code : "class Foo { static ['constructor']() {} }" ,
341+ output : "class Foo { static 'constructor'() {} }" ,
342+ options : [ { enforceForClassMembers : true } ] ,
343+ errors : [ {
344+ message : "Unnecessarily computed property ['constructor'] found." , type : "MethodDefinition"
345+ } ]
346+ } , {
347+ code : "class Foo { ['prototype']() {} }" ,
348+ output : "class Foo { 'prototype'() {} }" ,
349+ options : [ { enforceForClassMembers : true } ] ,
350+ errors : [ {
351+ message : "Unnecessarily computed property ['prototype'] found." , type : "MethodDefinition"
352+ } ]
353+ } , {
354+ code : "(class { ['x']() {} })" ,
355+ output : "(class { 'x'() {} })" ,
356+ options : [ { enforceForClassMembers : true } ] ,
357+ errors : [ {
358+ message : "Unnecessarily computed property ['x'] found." , type : "MethodDefinition"
359+ } ]
360+ } , {
361+ code : "(class { static ['constructor']() {} })" ,
362+ output : "(class { static 'constructor'() {} })" ,
363+ options : [ { enforceForClassMembers : true } ] ,
364+ errors : [ {
365+ message : "Unnecessarily computed property ['constructor'] found." , type : "MethodDefinition"
366+ } ]
367+ } , {
368+ code : "(class { ['prototype']() {} })" ,
369+ output : "(class { 'prototype'() {} })" ,
370+ options : [ { enforceForClassMembers : true } ] ,
371+ errors : [ {
372+ message : "Unnecessarily computed property ['prototype'] found." , type : "MethodDefinition"
373+ } ]
171374 }
172375 ]
173376} ) ;
0 commit comments