From db85bdc3fccd3bf1ffead68a2f77e1adf091934e Mon Sep 17 00:00:00 2001 From: Sam Pepose Date: Tue, 15 Nov 2016 13:43:42 -0600 Subject: [PATCH] Added flowCommaSeparator option for object types (#3547) --- packages/babel-generator/README.md | 1 + packages/babel-generator/src/generators/flow.js | 6 +++++- packages/babel-generator/src/index.js | 3 ++- .../fixtures/flowUsesCommas/ObjectExpression/actual.js | 10 ++++++++++ .../flowUsesCommas/ObjectExpression/expected.js | 10 ++++++++++ .../test/fixtures/flowUsesCommas/options.json | 3 +++ 6 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/actual.js create mode 100644 packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/expected.js create mode 100644 packages/babel-generator/test/fixtures/flowUsesCommas/options.json diff --git a/packages/babel-generator/README.md b/packages/babel-generator/README.md index 5de763278c..176b7649ca 100644 --- a/packages/babel-generator/README.md +++ b/packages/babel-generator/README.md @@ -37,6 +37,7 @@ minified | boolean | `false` | Should the output be minif concise | boolean | `false` | Set to `true` to reduce whitespace (but not as much as `opts.compact`) quotes | `'single'` or `'double'` | autodetect based on `ast.tokens` | The type of quote to use in the output filename | string | | Used in warning messages +flowCommaSeparator | boolean | `false` | Set to `true` to use commas instead of semicolons as Flow property separators Options for source maps: diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index b6c5a8b20d..4a03b21a6b 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -274,7 +274,11 @@ export function ObjectTypeAnnotation(node: Object) { statement: true, iterator: () => { if (props.length !== 1) { - this.semicolon(); + if (this.format.flowCommaSeparator) { + this.token(","); + } else { + this.semicolon(); + } this.space(); } } diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js index 714f21d748..b4442b27e2 100644 --- a/packages/babel-generator/src/index.js +++ b/packages/babel-generator/src/index.js @@ -63,7 +63,8 @@ function normalizeOptions(code, opts, tokens): Format { adjustMultilineComment: true, style: style, base: 0 - } + }, + flowCommaSeparator: opts.flowCommaSeparator, }; if (format.minified) { diff --git a/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/actual.js b/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/actual.js new file mode 100644 index 0000000000..b25558906e --- /dev/null +++ b/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/actual.js @@ -0,0 +1,10 @@ +var a: { numVal: number }; +var a: { numVal: number; }; +var a: { numVal: number; [indexer: string]: number }; +var a: ?{ numVal: number }; +var a: { numVal: number; strVal: string } +var a: { subObj: {strVal: string} } +var a: { subObj: ?{strVal: string} } +var a: { param1: number; param2: string } +var a: { param1: number; param2?: string } +var a: { [a: number]: string; [b: number]: string; }; diff --git a/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/expected.js b/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/expected.js new file mode 100644 index 0000000000..69dd9891bb --- /dev/null +++ b/packages/babel-generator/test/fixtures/flowUsesCommas/ObjectExpression/expected.js @@ -0,0 +1,10 @@ +var a: { numVal: number }; +var a: { numVal: number }; +var a: { numVal: number, [indexer: string]: number, }; +var a: ?{ numVal: number }; +var a: { numVal: number, strVal: string, }; +var a: { subObj: { strVal: string } }; +var a: { subObj: ?{ strVal: string } }; +var a: { param1: number, param2: string, }; +var a: { param1: number, param2?: string, }; +var a: { [a: number]: string, [b: number]: string, }; diff --git a/packages/babel-generator/test/fixtures/flowUsesCommas/options.json b/packages/babel-generator/test/fixtures/flowUsesCommas/options.json new file mode 100644 index 0000000000..f50690ec13 --- /dev/null +++ b/packages/babel-generator/test/fixtures/flowUsesCommas/options.json @@ -0,0 +1,3 @@ +{ + "flowCommaSeparator": true +}