1+ import tsParser from "@typescript-eslint/parser"
12import assert from "assert"
23import { getProperty } from "dot-prop"
34import { isParenthesized } from "../src/index.mjs"
45import { newCompatLinter } from "./test-lib/eslint-compat.mjs"
56
67describe ( "The 'isParenthesized' function" , ( ) => {
7- for ( const { code, expected } of [
8+ for ( const { code, expected, parser } of [
89 {
910 code : "777" ,
1011 expected : {
@@ -215,6 +216,73 @@ describe("The 'isParenthesized' function", () => {
215216 "body[0].parent" : false ,
216217 } ,
217218 } ,
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+ } ,
218286 ] ) {
219287 describe ( `on the code \`${ code } \`` , ( ) => {
220288 for ( const key of Object . keys ( expected ) ) {
@@ -226,6 +294,7 @@ describe("The 'isParenthesized' function", () => {
226294 languageOptions : {
227295 ecmaVersion : 2020 ,
228296 sourceType : "script" ,
297+ parser,
229298 } ,
230299 rules : { "test/test" : "error" } ,
231300 plugins : {
0 commit comments