diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 4a03b21a6b..9ef56bdde4 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -270,6 +270,9 @@ export function ObjectTypeAnnotation(node: Object) { this.space(); this.printJoin(props, node, { + addNewlines(leading) { + if (leading && !props[0]) return 1; + }, indent: true, statement: true, iterator: () => { diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index 6b49e36406..bbdb06eddb 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -143,6 +143,27 @@ describe("programmatic generation", function() { "}", ].join("\n")); }); + + it("flow object indentation with empty leading ObjectTypeProperty", function() { + let objectStatement = t.objectTypeAnnotation( + [], + [ + t.objectTypeIndexer( + t.identifier("key"), + t.anyTypeAnnotation(), + t.identifier("Test"), + ), + ] + ); + + let output = generate.default(objectStatement).code; + + assert.equal(output, [ + "{", + " [key: any]: Test;", + "}", + ].join("\n")); + }); }); describe("whitespace", function () {