diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index 8b043badf1..79b97902b8 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -157,6 +157,10 @@ export function TSUnionType(node: Object, parent: Object): boolean { export { TSUnionType as TSIntersectionType }; +export function TSInferType(node: Object, parent: Object): boolean { + return t.isTSArrayType(parent) || t.isTSOptionalType(parent); +} + export function BinaryExpression(node: Object, parent: Object): boolean { // let i = (1 in []); // for ((1 in []);;); diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index e247686e24..f62ae453f5 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -295,6 +295,15 @@ describe("generation", function() { expect(generated).toHaveProperty("map"); expect(typeof generated.map).toBe("object"); }); + + it("wraps around infer inside an array type", () => { + const type = t.tsArrayType( + t.tsInferType(t.tsTypeParameter(null, null, "T")), + ); + + const output = generate(type).code; + expect(output).toBe("(infer T)[]"); + }); }); describe("programmatic generation", function() {