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);
|
||||
}
|
||||
|
||||
export function FunctionTypeAnnotation(node: Object, parent: Object): boolean {
|
||||
export function FunctionTypeAnnotation(
|
||||
node: Object,
|
||||
parent: Object,
|
||||
printStack: Array<Object>,
|
||||
): boolean {
|
||||
return (
|
||||
// (() => A) | (() => B)
|
||||
t.isUnionTypeAnnotation(parent) ||
|
||||
// (() => A) & (() => B)
|
||||
t.isIntersectionTypeAnnotation(parent) ||
|
||||
// (() => 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 bar6 = (x: number) => {};
|
||||
const bar7 = <T>(x) => {};
|
||||
const bar8 = <T>(x: T): (T => T[]) => y => [x, y];
|
||||
|
||||
@ -10,4 +10,6 @@ const bar5 = (x): string => {};
|
||||
|
||||
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