diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 7fe20066a2..2e84c78ca1 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -93,6 +93,17 @@ export function Binary(node: Object, parent: Object): boolean { return false; } +export function UnionTypeAnnotation(node: Object, parent: Object): boolean { + return ( + t.isArrayTypeAnnotation(parent) || + t.isNullableTypeAnnotation(parent) || + t.isIntersectionTypeAnnotation(parent) || + t.isUnionTypeAnnotation(parent) + ); +} + +export { UnionTypeAnnotation as IntersectionTypeAnnotation }; + export function TSAsExpression() { return true; } diff --git a/packages/babel-generator/test/fixtures/flow/type-union-intersection/actual.js b/packages/babel-generator/test/fixtures/flow/type-union-intersection/actual.js new file mode 100644 index 0000000000..1a82196a16 --- /dev/null +++ b/packages/babel-generator/test/fixtures/flow/type-union-intersection/actual.js @@ -0,0 +1,10 @@ +type foo = ?(a | b); +type foo2 = ?(a & b); +type foo3 = (a | b)[]; +type foo4 = (a & b)[]; +type foo5 = a | b | c; +type foo6 = a & b & c; +type foo7 = a & b | c; +type foo8 = a | b & c; +type foo9 = a & (b | c); +type foo10 = (a | b) & c; diff --git a/packages/babel-generator/test/fixtures/flow/type-union-intersection/expected.js b/packages/babel-generator/test/fixtures/flow/type-union-intersection/expected.js new file mode 100644 index 0000000000..0ac15dc681 --- /dev/null +++ b/packages/babel-generator/test/fixtures/flow/type-union-intersection/expected.js @@ -0,0 +1,10 @@ +type foo = ?(a | b); +type foo2 = ?(a & b); +type foo3 = (a | b)[]; +type foo4 = (a & b)[]; +type foo5 = a | b | c; +type foo6 = a & b & c; +type foo7 = (a & b) | c; +type foo8 = a | (b & c); +type foo9 = a & (b | c); +type foo10 = (a | b) & c; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 1555f0cff2..0b0b22e9d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1017,9 +1017,9 @@ babylon@7.0.0-beta.18: version "7.0.0-beta.18" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.18.tgz#5c23ee3fdb66358aabf3789779319c5b78a233c7" -babylon@7.0.0-beta.25: - version "7.0.0-beta.25" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.25.tgz#5fff5062b7082203b1bc5cab488e154cfee0202a" +babylon@7.0.0-beta.26: + version "7.0.0-beta.26" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.26.tgz#afc2c6b86113d000cc9476fd6f73e2a9223de8f7" babylon@^6.17.4, babylon@^6.18.0: version "6.18.0"