From 0e02a18216d07690f1f8c1618af50ced1d8208e2 Mon Sep 17 00:00:00 2001 From: Dan Harper Date: Sat, 1 Oct 2016 05:56:09 +0100 Subject: [PATCH] fix regression in transform-flow-comments for class properties (#4623) --- packages/babel-plugin-transform-flow-comments/src/index.js | 6 ++++++ .../fixtures/flow-comments/class-prop-values-2/actual.js | 4 ++++ .../fixtures/flow-comments/class-prop-values-2/expected.js | 4 ++++ .../flow-comments/class-prop-values-2/options.json | 5 +++++ .../fixtures/flow-comments/class-prop-values-3/actual.js | 5 +++++ .../fixtures/flow-comments/class-prop-values-3/expected.js | 7 +++++++ .../flow-comments/class-prop-values-3/options.json | 6 ++++++ .../fixtures/flow-comments/class-prop-values/expected.js | 2 +- 8 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/actual.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/expected.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/options.json create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/actual.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js create mode 100644 packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json diff --git a/packages/babel-plugin-transform-flow-comments/src/index.js b/packages/babel-plugin-transform-flow-comments/src/index.js index c7f64ff54d..4feb0fc422 100644 --- a/packages/babel-plugin-transform-flow-comments/src/index.js +++ b/packages/babel-plugin-transform-flow-comments/src/index.js @@ -37,6 +37,12 @@ export default function ({ types: t }) { } }, + // support for `class X { foo: string }` - #4622 + ClassProperty(path) { + let { node, parent } = path; + if (!node.value) wrapInFlowComment(path, parent); + }, + // support `export type a = {}` - #8 Error: You passed path.replaceWith() a falsy node "ExportNamedDeclaration|Flow"(path) { let { node, parent } = path; diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/actual.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/actual.js new file mode 100644 index 0000000000..58d05c282b --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/actual.js @@ -0,0 +1,4 @@ +class X { + a: number + b: ?string +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/expected.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/expected.js new file mode 100644 index 0000000000..27af0f35dd --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/expected.js @@ -0,0 +1,4 @@ +class X { + /*:: a: number*/ + /*:: b: ?string*/ +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/options.json b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/options.json new file mode 100644 index 0000000000..384e6d0f25 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-2/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + "transform-flow-comments" + ] +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/actual.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/actual.js new file mode 100644 index 0000000000..0ccfa52da2 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/actual.js @@ -0,0 +1,5 @@ +class X { + a: number = 2 + b: ?string = '3' + c: ?number +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js new file mode 100644 index 0000000000..878b228d63 --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/expected.js @@ -0,0 +1,7 @@ +class X { + constructor() { + this.a = 2; + this.b = '3'; + } + +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json new file mode 100644 index 0000000000..4f6232c07f --- /dev/null +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values-3/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-flow-comments", + "transform-class-properties" + ] +} diff --git a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values/expected.js b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values/expected.js index c2c2aa3db1..bb99973229 100644 --- a/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values/expected.js +++ b/packages/babel-plugin-transform-flow-comments/test/fixtures/flow-comments/class-prop-values/expected.js @@ -1,5 +1,5 @@ class X { foo = 2; bar /*: number*/ = 3; - baz /*: ?string*/; + /*:: baz: ?string*/ }