Fix parentheses for TSInstantiationExpression (#20027)

This commit is contained in:
fisker Cheung authored and GitHub committed 2026-09-12 09:49:06 +08:00
1 parent 5765169aa1
commit 1b68844e4d
9 files changed
+183 -5

No files matched your search

@@ -76,6 +76,14 @@ foo((a?.b)!);
(a?.b!()).c?.();
(a?.b())!.c?.();
// \`TSInstantiationExpression\`
a<b>();
(a<b>)();
(a?.b)<c>;
(a?.b<c>);
(a?.b!)<c>;
(a?.b)!<c>;
=====================================output=====================================
// Member expressions
(a?.b)!();
@@ -148,6 +156,14 @@ a?.b()!?.();
(a?.b!()).c?.();
(a?.b())!.c?.();
// \`TSInstantiationExpression\`
a<b>();
(a<b>)();
a?.b<c>;
a?.b<c>;
a?.b!<c>;
(a?.b)!<c>;
================================================================================
`;
@@ -543,6 +559,18 @@ new Foo(a?.b!);
new ((a?.b!)?.c)();
new ((a?.b)!?.c)();
// \`TSInstantiationExpression\`
new a<b>();
new (a<b>)();
new (a.b<c>)();
new (a.b)<c>();
new (a?.b<c>)();
new (a?.b)<c>();
new ((a?.b)!<c>)();
new ((a?.b)!)<c>();
new ((a?.b!)<c>)();
new ((a?.b!))<c>();
=====================================output=====================================
// Member expressions
new (a?.b)!();
@@ -613,6 +641,18 @@ new Foo(a?.b!);
new (a?.b!?.c)();
new ((a?.b)!?.c)();
// \`TSInstantiationExpression\`
new a<b>();
new (a<b>)();
new (a.b<c>)();
new a.b<c>();
new (a?.b<c>)();
new (a?.b)<c>();
new ((a?.b)!<c>)();
new (a?.b)!<c>();
new (a?.b!<c>)();
new (a?.b!)<c>();
================================================================================
`;
@@ -687,6 +727,18 @@ parsers: ["typescript"]
((a?.b!)?.c)\`\`;
((a?.b)!?.c)\`\`;
// \`TSInstantiationExpression\`
a<b>\`\`;
(a<b>)\`\`;
(a.b<c>)\`\`;
(a.b)<c>\`\`;
(a?.b<c>)\`\`;
(a?.b)<c>\`\`;
((a?.b)!<c>)\`\`;
((a?.b)!)<c>\`\`;
((a?.b!)<c>)\`\`;
((a?.b!))<c>\`\`;
=====================================output=====================================
// Member expressions
(a?.b)!\`\`;
@@ -754,6 +806,18 @@ a(b?.c!)\`\`;
(a?.b!?.c)\`\`;
((a?.b)!?.c)\`\`;
// \`TSInstantiationExpression\`
a<b>\`\`;
(a<b>)\`\`;
(a.b<c>)\`\`;
a.b<c>\`\`;
(a?.b<c>)\`\`;
(a?.b)<c>\`\`;
((a?.b)!<c>)\`\`;
(a?.b)!<c>\`\`;
(a?.b!<c>)\`\`;
(a?.b!)<c>\`\`;
================================================================================
`;
@@ -68,3 +68,11 @@ foo((a?.b)!);
(a?.b())!?.();
(a?.b!()).c?.();
(a?.b())!.c?.();
// `TSInstantiationExpression`
a<b>();
(a<b>)();
(a?.b)<c>;
(a?.b<c>);
(a?.b!)<c>;
(a?.b)!<c>;
@@ -66,3 +66,15 @@ new Foo(a?.b!);
// In optional chaining
new ((a?.b!)?.c)();
new ((a?.b)!?.c)();
// `TSInstantiationExpression`
new a<b>();
new (a<b>)();
new (a.b<c>)();
new (a.b)<c>();
new (a?.b<c>)();
new (a?.b)<c>();
new ((a?.b)!<c>)();
new ((a?.b)!)<c>();
new ((a?.b!)<c>)();
new ((a?.b!))<c>();
@@ -63,3 +63,15 @@
// In optional chaining
((a?.b!)?.c)``;
((a?.b)!?.c)``;
// `TSInstantiationExpression`
a<b>``;
(a<b>)``;
(a.b<c>)``;
(a.b)<c>``;
(a?.b<c>)``;
(a?.b)<c>``;
((a?.b)!<c>)``;
((a?.b)!)<c>``;
((a?.b!)<c>)``;
((a?.b!))<c>``;
@@ -150,6 +150,35 @@ a[(Array<string>).name];
================================================================================
`;
exports[`super-class.ts format 1`] = `
====================================options=====================================
parsers: ["typescript"]
printWidth: 80 (default) |
=====================================input======================================
class ClassDeclaration_1 extends B<T> {}
( class ClassExpresssion_1 extends B<T> {} );
class ClassDeclaration_2 extends (B<T>) {}
( class ClassExpresssion_2 extends (B<T>) {} );
// This not really make sense
// https://github.com/typescript-eslint/typescript-eslint/issues/12012
class ClassDeclaration_3 extends (B<T>)<T> {}
( class ClassExpresssion_3 extends (B<T>)<T> {} );
=====================================output=====================================
class ClassDeclaration_1 extends B<T> {}
(class ClassExpresssion_1 extends B<T> {});
class ClassDeclaration_2 extends (B<T>) {}
(class ClassExpresssion_2 extends (B<T>) {});
// This not really make sense
// https://github.com/typescript-eslint/typescript-eslint/issues/12012
class ClassDeclaration_3 extends (B<T>)<T> {}
(class ClassExpresssion_3 extends (B<T>)<T> {});
================================================================================
`;
exports[`typeof.ts format 1`] = `
====================================options=====================================
parsers: ["typescript"]
@@ -0,0 +1,9 @@
class ClassDeclaration_1 extends B<T> {}
( class ClassExpresssion_1 extends B<T> {} );
class ClassDeclaration_2 extends (B<T>) {}
( class ClassExpresssion_2 extends (B<T>) {} );
// This not really make sense
// https://github.com/typescript-eslint/typescript-eslint/issues/12012
class ClassDeclaration_3 extends (B<T>)<T> {}
( class ClassExpresssion_3 extends (B<T>)<T> {} );