Fix non-idempotent formatting of function calls with complex type arguments (#12508)
* Fix * Add TS tests * Add Flow tests * Add changelog
This commit is contained in:
1 parent
1939f92be5
commit
becb6c9b74
6 files changed
+148
-1
No files matched your search
@@ -0,0 +1,37 @@
|
||||
#### Fix non-idempotent formatting of function calls with complex type arguments (#12508 by @sosukesuzuki)
|
||||
|
||||
<!-- prettier-ignore -->
|
||||
```tsx
|
||||
// Input
|
||||
const foo =
|
||||
doSomething<{ foo1: "foo1", foo2: "foo2", foo3: "foo3", foo4: "foo4", foo5: "foo5" }>();
|
||||
|
||||
// Prettier stable (first)
|
||||
const foo =
|
||||
doSomething<{
|
||||
foo1: "foo1";
|
||||
foo2: "foo2";
|
||||
foo3: "foo3";
|
||||
foo4: "foo4";
|
||||
foo5: "foo5";
|
||||
}>();
|
||||
|
||||
// Prettier stable (second)
|
||||
const foo = doSomething<{
|
||||
foo1: "foo1";
|
||||
foo2: "foo2";
|
||||
foo3: "foo3";
|
||||
foo4: "foo4";
|
||||
foo5: "foo5";
|
||||
}>();
|
||||
|
||||
// Prettier main
|
||||
const foo = doSomething<{
|
||||
foo1: "foo1";
|
||||
foo2: "foo2";
|
||||
foo3: "foo3";
|
||||
foo4: "foo4";
|
||||
foo5: "foo5";
|
||||
}>();
|
||||
|
||||
```
|
||||
@@ -441,7 +441,9 @@ function isCallExpressionWithComplexTypeArguments(node, print) {
|
||||
firstArg.type === "TSUnionType" ||
|
||||
firstArg.type === "UnionTypeAnnotation" ||
|
||||
firstArg.type === "TSIntersectionType" ||
|
||||
firstArg.type === "IntersectionTypeAnnotation"
|
||||
firstArg.type === "IntersectionTypeAnnotation" ||
|
||||
firstArg.type === "TSTypeLiteral" ||
|
||||
firstArg.type === "ObjectTypeAnnotation"
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -110,3 +110,52 @@ const map: Map<Function, Foo<S>> = new Map();
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`issue-12413.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel-flow", "flow"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
let emit =
|
||||
defineEmits<{ (event: "ready", canvas: HTMLCanvasElement): void; (event:"resize",canvas:HTMLCanvasElement):void; }>();
|
||||
|
||||
let abc =
|
||||
func<{a:2,b:3,d:78,e:9,f:8,g:7,h:6,i:5,j:4,k:3,l:2,m:1,n:0,o:9,p:8,q:7,r:6,s:5,t:4,u:3,v:2,w:1,x:0,y:9,z:8}>();
|
||||
|
||||
=====================================output=====================================
|
||||
let emit = defineEmits<{
|
||||
(event: "ready", canvas: HTMLCanvasElement): void,
|
||||
(event: "resize", canvas: HTMLCanvasElement): void,
|
||||
}>();
|
||||
|
||||
let abc = func<{
|
||||
a: 2,
|
||||
b: 3,
|
||||
d: 78,
|
||||
e: 9,
|
||||
f: 8,
|
||||
g: 7,
|
||||
h: 6,
|
||||
i: 5,
|
||||
j: 4,
|
||||
k: 3,
|
||||
l: 2,
|
||||
m: 1,
|
||||
n: 0,
|
||||
o: 9,
|
||||
p: 8,
|
||||
q: 7,
|
||||
r: 6,
|
||||
s: 5,
|
||||
t: 4,
|
||||
u: 3,
|
||||
v: 2,
|
||||
w: 1,
|
||||
x: 0,
|
||||
y: 9,
|
||||
z: 8,
|
||||
}>();
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,5 @@
|
||||
let emit =
|
||||
defineEmits<{ (event: "ready", canvas: HTMLCanvasElement): void; (event:"resize",canvas:HTMLCanvasElement):void; }>();
|
||||
|
||||
let abc =
|
||||
func<{a:2,b:3,d:78,e:9,f:8,g:7,h:6,i:5,j:4,k:3,l:2,m:1,n:0,o:9,p:8,q:7,r:6,s:5,t:4,u:3,v:2,w:1,x:0,y:9,z:8}>();
|
||||
@@ -443,6 +443,55 @@ const map: Map<Function, Foo<S>> = new Map();
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`issue-12413.ts format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["typescript"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
let emit =
|
||||
defineEmits<{ (event: "ready", canvas: HTMLCanvasElement): void; (event:"resize",canvas:HTMLCanvasElement):void; }>();
|
||||
|
||||
let abc =
|
||||
func<{a:2,b:3,d:78,e:9,f:8,g:7,h:6,i:5,j:4,k:3,l:2,m:1,n:0,o:9,p:8,q:7,r:6,s:5,t:4,u:3,v:2,w:1,x:0,y:9,z:8}>();
|
||||
|
||||
=====================================output=====================================
|
||||
let emit = defineEmits<{
|
||||
(event: "ready", canvas: HTMLCanvasElement): void;
|
||||
(event: "resize", canvas: HTMLCanvasElement): void;
|
||||
}>();
|
||||
|
||||
let abc = func<{
|
||||
a: 2;
|
||||
b: 3;
|
||||
d: 78;
|
||||
e: 9;
|
||||
f: 8;
|
||||
g: 7;
|
||||
h: 6;
|
||||
i: 5;
|
||||
j: 4;
|
||||
k: 3;
|
||||
l: 2;
|
||||
m: 1;
|
||||
n: 0;
|
||||
o: 9;
|
||||
p: 8;
|
||||
q: 7;
|
||||
r: 6;
|
||||
s: 5;
|
||||
t: 4;
|
||||
u: 3;
|
||||
v: 2;
|
||||
w: 1;
|
||||
x: 0;
|
||||
y: 9;
|
||||
z: 8;
|
||||
}>();
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`lone-arg.ts format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["typescript"]
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
let emit =
|
||||
defineEmits<{ (event: "ready", canvas: HTMLCanvasElement): void; (event:"resize",canvas:HTMLCanvasElement):void; }>();
|
||||
|
||||
let abc =
|
||||
func<{a:2,b:3,d:78,e:9,f:8,g:7,h:6,i:5,j:4,k:3,l:2,m:1,n:0,o:9,p:8,q:7,r:6,s:5,t:4,u:3,v:2,w:1,x:0,y:9,z:8}>();
|
||||
Reference in new issue
Block a user