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;
}