Skip to content

Commit

Permalink
Fix generator missing parens around an arrow returning function type (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
existentialism authored and JLHwung committed Oct 12, 2019
1 parent 99035ca commit e28c8ac
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 3 deletions.
12 changes: 10 additions & 2 deletions packages/babel-generator/src/node/parentheses.js
Expand Up @@ -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]))
);
}

Expand Down
Expand Up @@ -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];
Expand Up @@ -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];

0 comments on commit e28c8ac

Please sign in to comment.