1
+ import tsParser from "@typescript-eslint/parser"
1
2
import assert from "assert"
2
3
import { getProperty } from "dot-prop"
3
4
import { isParenthesized } from "../src/index.mjs"
4
5
import { newCompatLinter } from "./test-lib/eslint-compat.mjs"
5
6
6
7
describe ( "The 'isParenthesized' function" , ( ) => {
7
- for ( const { code, expected } of [
8
+ for ( const { code, expected, parser } of [
8
9
{
9
10
code : "777" ,
10
11
expected : {
@@ -215,6 +216,73 @@ describe("The 'isParenthesized' function", () => {
215
216
"body[0].parent" : false ,
216
217
} ,
217
218
} ,
219
+ // TypeScript support
220
+ {
221
+ code : "f<import('foo')>(a)" ,
222
+ expected : {
223
+ "body[0]" : false ,
224
+ "body[0].expression" : false ,
225
+ "body[0].expression.arguments[0]" : false ,
226
+ } ,
227
+ parser : tsParser ,
228
+ } ,
229
+ {
230
+ code : "f<import('foo')>((a))" ,
231
+ expected : {
232
+ "body[0]" : false ,
233
+ "body[0].expression" : false ,
234
+ "body[0].expression.arguments[0]" : true ,
235
+ } ,
236
+ parser : tsParser ,
237
+ } ,
238
+ {
239
+ code : "f<import('foo')>(a,b)" ,
240
+ expected : {
241
+ "body[0]" : false ,
242
+ "body[0].expression" : false ,
243
+ "body[0].expression.arguments[0]" : false ,
244
+ "body[0].expression.arguments[1]" : false ,
245
+ } ,
246
+ parser : tsParser ,
247
+ } ,
248
+ {
249
+ code : "f<import('foo')>((a),b)" ,
250
+ expected : {
251
+ "body[0]" : false ,
252
+ "body[0].expression" : false ,
253
+ "body[0].expression.arguments[0]" : true ,
254
+ "body[0].expression.arguments[1]" : false ,
255
+ } ,
256
+ parser : tsParser ,
257
+ } ,
258
+ {
259
+ code : "f<import('foo')>(a,(b))" ,
260
+ expected : {
261
+ "body[0]" : false ,
262
+ "body[0].expression" : false ,
263
+ "body[0].expression.arguments[0]" : false ,
264
+ "body[0].expression.arguments[1]" : true ,
265
+ } ,
266
+ parser : tsParser ,
267
+ } ,
268
+ {
269
+ code : "new f<import('foo')>(a)" ,
270
+ expected : {
271
+ "body[0]" : false ,
272
+ "body[0].expression" : false ,
273
+ "body[0].expression.arguments[0]" : false ,
274
+ } ,
275
+ parser : tsParser ,
276
+ } ,
277
+ {
278
+ code : "new f<import('foo')>((a))" ,
279
+ expected : {
280
+ "body[0]" : false ,
281
+ "body[0].expression" : false ,
282
+ "body[0].expression.arguments[0]" : true ,
283
+ } ,
284
+ parser : tsParser ,
285
+ } ,
218
286
] ) {
219
287
describe ( `on the code \`${ code } \`` , ( ) => {
220
288
for ( const key of Object . keys ( expected ) ) {
@@ -226,6 +294,7 @@ describe("The 'isParenthesized' function", () => {
226
294
languageOptions : {
227
295
ecmaVersion : 2020 ,
228
296
sourceType : "script" ,
297
+ parser,
229
298
} ,
230
299
rules : { "test/test" : "error" } ,
231
300
plugins : {
0 commit comments