Fix generator missing parens around an arrow returning function type (#10519)
This commit is contained in:
parent
99035ca96e
commit
e28c8ac612
@ -35,14 +35,22 @@ export function NullableTypeAnnotation(node: Object, parent: Object): boolean {
|
|||||||
return t.isArrayTypeAnnotation(parent);
|
return t.isArrayTypeAnnotation(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function FunctionTypeAnnotation(node: Object, parent: Object): boolean {
|
export function FunctionTypeAnnotation(
|
||||||
|
node: Object,
|
||||||
|
parent: Object,
|
||||||
|
printStack: Array<Object>,
|
||||||
|
): boolean {
|
||||||
return (
|
return (
|
||||||
// (() => A) | (() => B)
|
// (() => A) | (() => B)
|
||||||
t.isUnionTypeAnnotation(parent) ||
|
t.isUnionTypeAnnotation(parent) ||
|
||||||
// (() => A) & (() => B)
|
// (() => A) & (() => B)
|
||||||
t.isIntersectionTypeAnnotation(parent) ||
|
t.isIntersectionTypeAnnotation(parent) ||
|
||||||
// (() => A)[]
|
// (() => A)[]
|
||||||
t.isArrayTypeAnnotation(parent)
|
t.isArrayTypeAnnotation(parent) ||
|
||||||
|
// <T>(A: T): (T => T[]) => B => [A, B]
|
||||||
|
(t.isTypeAnnotation(parent) &&
|
||||||
|
// Check grandparent
|
||||||
|
t.isArrowFunctionExpression(printStack[printStack.length - 3]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -5,3 +5,4 @@ const bar4 = x => {};
|
|||||||
const bar5 = (x): string => {};
|
const bar5 = (x): string => {};
|
||||||
const bar6 = (x: number) => {};
|
const bar6 = (x: number) => {};
|
||||||
const bar7 = <T>(x) => {};
|
const bar7 = <T>(x) => {};
|
||||||
|
const bar8 = <T>(x: T): (T => T[]) => y => [x, y];
|
||||||
|
|||||||
@ -11,3 +11,5 @@ const bar5 = (x): string => {};
|
|||||||
const bar6 = (x: number) => {};
|
const bar6 = (x: number) => {};
|
||||||
|
|
||||||
const bar7 = <T>(x) => {};
|
const bar7 = <T>(x) => {};
|
||||||
|
|
||||||
|
const bar8 = <T>(x: T): ((T) => T[]) => y => [x, y];
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user