@@ -37,6 +37,17 @@ describe("The 'getStaticValue' function", () => {
37
37
{ code : "1 ^ 15" , expected : { value : 14 } } ,
38
38
{ code : "3 & 2" , expected : { value : 2 } } ,
39
39
{ code : "a + 1" , expected : null } ,
40
+ {
41
+ code : "(123.456).toExponential()" ,
42
+ expected : { value : "1.23456e+2" } ,
43
+ } ,
44
+ { code : "(123.456).toExponential(3)" , expected : { value : "1.235e+2" } } ,
45
+ { code : "(123.456).toFixed()" , expected : { value : "123" } } ,
46
+ { code : "(123.456).toFixed(1)" , expected : { value : "123.5" } } ,
47
+ { code : "(123.456).toPrecision()" , expected : { value : "123.456" } } ,
48
+ { code : "(123.456).toPrecision(2)" , expected : { value : "1.2e+2" } } ,
49
+ { code : "(123.456).toString()" , expected : { value : "123.456" } } ,
50
+ { code : "(123).toString(16)" , expected : { value : "7b" } } ,
40
51
{ code : "String(7)" , expected : { value : "7" } } ,
41
52
{ code : "Math.round(0.7)" , expected : { value : 1 } } ,
42
53
{ code : "Math['round'](0.4)" , expected : { value : 0 } } ,
@@ -84,6 +95,50 @@ describe("The 'getStaticValue' function", () => {
84
95
{ code : "Object.xxx" , expected : { value : undefined } } ,
85
96
{ code : "new Array(2)" , expected : null } ,
86
97
{ code : "new Array(len)" , expected : null } ,
98
+ { code : "Array.of()" , expected : { value : [ ] } } ,
99
+ { code : "Array.of(1)" , expected : { value : [ 1 ] } } ,
100
+ { code : "Array.of(1, 2)" , expected : { value : [ 1 , 2 ] } } ,
101
+ {
102
+ code : "[0,1,2].at(-1)" ,
103
+ expected : Array . prototype . at ? { value : 2 } : null ,
104
+ } ,
105
+ {
106
+ code : "[0,1,2].concat([3,4], [5])" ,
107
+ expected : { value : [ 0 , 1 , 2 , 3 , 4 , 5 ] } ,
108
+ } ,
109
+ { code : "[0,1,2].every(Boolean)" , expected : { value : false } } ,
110
+ { code : "[0,1,2].filter(Boolean)" , expected : { value : [ 1 , 2 ] } } ,
111
+ { code : "[0,1,2].find((i) => i === 2)" , expected : null } ,
112
+ { code : "[0,1,2].findIndex((i) => i === 2)" , expected : null } ,
113
+ {
114
+ code : "[-1, [0,1,2], [[4]]].flat()" ,
115
+ expected : { value : [ - 1 , 0 , 1 , 2 , [ 4 ] ] } ,
116
+ } ,
117
+ { code : "[0,1,2].includes(4)" , expected : { value : false } } ,
118
+ { code : "[0,1,2].indexOf(4)" , expected : { value : - 1 } } ,
119
+ { code : "[0,1,2].join()" , expected : { value : "0,1,2" } } ,
120
+ { code : "[0,1,2].join('|')" , expected : { value : "0|1|2" } } ,
121
+ { code : "[1,1,1].lastIndexOf(1)" , expected : { value : 2 } } ,
122
+ { code : "[0,1,2].slice(1)" , expected : { value : [ 1 , 2 ] } } ,
123
+ { code : "[0,1,2].some(Boolean)" , expected : { value : true } } ,
124
+ { code : "[0,1,2].toString()" , expected : { value : "0,1,2" } } ,
125
+ { code : "String([0,1,2])" , expected : { value : "0,1,2" } } ,
126
+ { code : "[...[0,1,,2].keys()]" , expected : { value : [ 0 , 1 , 2 , 3 ] } } ,
127
+ {
128
+ code : "[...[0,1,,2].values()]" ,
129
+ expected : { value : [ 0 , 1 , undefined , 2 ] } ,
130
+ } ,
131
+ {
132
+ code : "[...[0,1,,2].entries()]" ,
133
+ expected : {
134
+ value : [
135
+ [ 0 , 0 ] ,
136
+ [ 1 , 1 ] ,
137
+ [ 2 , undefined ] ,
138
+ [ 3 , 2 ] ,
139
+ ] ,
140
+ } ,
141
+ } ,
87
142
{ code : "({})" , expected : { value : { } } } ,
88
143
{
89
144
code : "({a: 1, b: 2, c: 3})" ,
@@ -105,6 +160,12 @@ describe("The 'getStaticValue' function", () => {
105
160
{ code : "String.raw`\\unicode`" , expected : { value : "\\unicode" } } ,
106
161
{ code : "`he${a}o`" , expected : null } , //eslint-disable-line no-template-curly-in-string
107
162
{ code : "x`hello`" , expected : null } ,
163
+ { code : "' foo '.trim()" , expected : { value : "foo" } } ,
164
+ { code : "' foo '.trim().toUpperCase()" , expected : { value : "FOO" } } ,
165
+ { code : "' foo '.indexOf('f')" , expected : { value : 2 } } ,
166
+ { code : "' foo '.charAt(4)" , expected : { value : "o" } } ,
167
+ { code : "' foo '.charCodeAt(400)" , expected : { value : NaN } } ,
168
+ { code : "' foo '.repeat(1e12)" , expected : null } ,
108
169
{ code : "-1" , expected : { value : - 1 } } ,
109
170
{ code : "+'1'" , expected : { value : 1 } } ,
110
171
{ code : "!0" , expected : { value : true } } ,
@@ -243,6 +304,31 @@ const aMap = Object.freeze({
243
304
code : "({'a': 1, 1e+1: 2, 2n: 3})" ,
244
305
expected : { value : { a : 1 , 10 : 2 , 2 : 3 } } ,
245
306
} ,
307
+ {
308
+ code : "new Set([1,2])" ,
309
+ expected : { value : new Set ( [ 1 , 2 ] ) } ,
310
+ } ,
311
+ {
312
+ code : "new Set([1,2]).has(2)" ,
313
+ expected : { value : true } ,
314
+ } ,
315
+ {
316
+ code : "new Map([[1,2], [4,6]])" ,
317
+ expected : {
318
+ value : new Map ( [
319
+ [ 1 , 2 ] ,
320
+ [ 4 , 6 ] ,
321
+ ] ) ,
322
+ } ,
323
+ } ,
324
+ {
325
+ code : "const m = new Map([[1,2], [4,6]]); m.get(1)" ,
326
+ expected : { value : 2 } ,
327
+ } ,
328
+ {
329
+ code : "const m = new Map([[1,2], [4,6]]); m.has(2)" ,
330
+ expected : { value : false } ,
331
+ } ,
246
332
...( semver . gte ( eslint . Linter . version , "8.0.0" )
247
333
? [
248
334
{
0 commit comments