diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/actual.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/actual.js new file mode 100644 index 0000000000..2f431e188e --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/actual.js @@ -0,0 +1,7 @@ +class A { + render() { + return + } +} + +export default class B {} diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/expected.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/expected.js new file mode 100644 index 0000000000..03f5171114 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/expected.js @@ -0,0 +1,9 @@ +class A { + render() { + return _ref; + } +} + +export default class B {} + +var _ref = React.createElement(B, null); diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/options.json new file mode 100644 index 0000000000..60d815dd9a --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-react-jsx", + "transform-react-constant-elements" + ] +} diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/actual.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/actual.js new file mode 100644 index 0000000000..cbd3496529 --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/actual.js @@ -0,0 +1,7 @@ +class A { + render() { + return + } +} + +export class B {} diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/expected.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/expected.js new file mode 100644 index 0000000000..f292e104aa --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/expected.js @@ -0,0 +1,9 @@ +class A { + render() { + return _ref; + } +} + +export class B {} + +var _ref = React.createElement(B, null); diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/options.json b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/options.json new file mode 100644 index 0000000000..60d815dd9a --- /dev/null +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/options.json @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-react-jsx", + "transform-react-constant-elements" + ] +} diff --git a/packages/babel-traverse/src/path/lib/hoister.js b/packages/babel-traverse/src/path/lib/hoister.js index 69154bbc2d..93b5cba40f 100644 --- a/packages/babel-traverse/src/path/lib/hoister.js +++ b/packages/babel-traverse/src/path/lib/hoister.js @@ -117,6 +117,12 @@ export default class PathHoister { } } + // We can't insert before/after a child of an export declaration, so move up + // to the declaration itself. + if (path.parentPath.isExportDeclaration()) { + path = path.parentPath; + } + return path; }