From 71013088efb3353a01c8f940757c047b4fb7a521 Mon Sep 17 00:00:00 2001 From: Tan Li Hau Date: Sat, 27 Apr 2019 04:22:41 +0800 Subject: [PATCH] fix flow-comment - object destructuring (#9893) --- .../babel-plugin-transform-flow-comments/src/index.js | 11 +++++++++++ .../flow-comments/object-destructuring-1/input.js | 3 +++ .../flow-comments/object-destructuring-1/output.js | 10 ++++++++++ .../flow-comments/object-destructuring-2/input.js | 1 + .../flow-comments/object-destructuring-2/output.js | 9 +++++++++ 5 files changed, 34 insertions(+) create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/input.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/output.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/input.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/output.js diff --git a/packages/babel-plugin-transform-flow-comments/src/index.js b/packages/babel-plugin-transform-flow-comments/src/index.js index bf948197f253..027239b96d08 100644 --- a/packages/babel-plugin-transform-flow-comments/src/index.js +++ b/packages/babel-plugin-transform-flow-comments/src/index.js @@ -127,6 +127,17 @@ export default declare(api => { } wrapInFlowComment(path, parent); }, + ObjectPattern(path) { + const { node } = path; + if (node.typeAnnotation) { + const typeAnnotation = path.get("typeAnnotation"); + path.addComment( + "trailing", + generateComment(typeAnnotation, typeAnnotation.node), + ); + typeAnnotation.remove(); + } + }, Flow(path) { const { parent } = path; diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/input.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/input.js new file mode 100644 index 000000000000..012394cdc352 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/input.js @@ -0,0 +1,3 @@ +function add({ a, b }: {a: number, b: number}): number { + return a + b; +} \ No newline at end of file diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/output.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/output.js new file mode 100644 index 000000000000..1b94de916099 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-1/output.js @@ -0,0 +1,10 @@ +function add({ + a, + b +} +/*: {a: number, b: number}*/ +) +/*: number*/ +{ + return a + b; +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/input.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/input.js new file mode 100644 index 000000000000..7f5be924a0cf --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/input.js @@ -0,0 +1 @@ +const { a, b }: { a: number, b: number } = { a: 1, b: 2 }; \ No newline at end of file diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/output.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/output.js new file mode 100644 index 000000000000..78fd7a3ae717 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/object-destructuring-2/output.js @@ -0,0 +1,9 @@ +const { + a, + b +} +/*: { a: number, b: number }*/ += { + a: 1, + b: 2 +};