;
@@ -14,6 +16,8 @@ let Child = () => _ref2;
Child = HOC(Child);
-var _ref =
+var _ref =
+/*#__PURE__*/
+
;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/function-parameter/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/function-parameter/output.js
index 0e737624da..9aa0a32a48 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/function-parameter/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/function-parameter/output.js
@@ -1,5 +1,7 @@
function render(text) {
- var _ref =
{text};
+ var _ref =
+ /*#__PURE__*/
+
{text};
return function () {
return _ref;
@@ -9,7 +11,9 @@ function render(text) {
var Foo2 = require("Foo");
function createComponent(text) {
- var _ref2 =
{text};
+ var _ref2 =
+ /*#__PURE__*/
+
{text};
return function render() {
return _ref2;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/global-reference/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/global-reference/output.js
index 2bfa9cf8e6..0e89a63b8f 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/global-reference/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/global-reference/output.js
@@ -1,4 +1,6 @@
-var _ref =
;
+var _ref =
+/*#__PURE__*/
+
;
var Foo = React.createClass({
render: function render() {
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/html-element/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/html-element/output.js
index 7ec3220a51..68181887a4 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/html-element/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/html-element/output.js
@@ -1,10 +1,14 @@
-var _ref =
;
+var _ref =
+/*#__PURE__*/
+
;
function render() {
return _ref;
}
-var _ref2 =
;
+var _ref2 =
+/*#__PURE__*/
+
;
function render() {
return _ref2;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js
index 7ad3af57ed..3ae20e546c 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inline-elements/output.js
@@ -2,7 +2,9 @@ var REACT_ELEMENT_TYPE;
function _jsx(type, props, key, children) { if (!REACT_ELEMENT_TYPE) { REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; } var defaultProps = type && type.defaultProps; var childrenLength = arguments.length - 3; if (!props && childrenLength !== 0) { props = { children: void 0 }; } if (props && defaultProps) { for (var propName in defaultProps) { if (props[propName] === void 0) { props[propName] = defaultProps[propName]; } } } else if (!props) { props = defaultProps || {}; } if (childrenLength === 1) { props.children = children; } else if (childrenLength > 1) { var childArray = new Array(childrenLength); for (var i = 0; i < childrenLength; i++) { childArray[i] = arguments[i + 3]; } props.children = childArray; } return { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key === undefined ? null : '' + key, ref: null, props: props, _owner: null }; }
-var _ref = _jsx("foo", {});
+var _ref =
+/*#__PURE__*/
+_jsx("foo", {});
function render() {
return _ref;
@@ -11,7 +13,9 @@ function render() {
function render() {
var text = getText();
- var _ref2 = _jsx("foo", {}, void 0, text);
+ var _ref2 =
+ /*#__PURE__*/
+ _jsx("foo", {}, void 0, text);
return function () {
return _ref2;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inner-declaration/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inner-declaration/output.js
index b0e2cde1ad..0175f703f8 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inner-declaration/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/inner-declaration/output.js
@@ -1,7 +1,9 @@
function render() {
var text = getText();
- var _ref =
{text};
+ var _ref =
+ /*#__PURE__*/
+
{text};
return function () {
return _ref;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-constant/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-constant/output.js
index aa7a9994ba..ff03fb77d1 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-constant/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-constant/output.js
@@ -1,7 +1,9 @@
function render() {
this.component = "div";
- var _ref =
;
+ var _ref =
+ /*#__PURE__*/
+
;
return () => _ref;
}
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/output.js
index 9ce3a08e74..a22f490042 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression-this/output.js
@@ -1,10 +1,14 @@
-var _ref =
Sub Component;
+var _ref =
+/*#__PURE__*/
+
Sub Component;
class Component extends React.Component {
constructor(...args) {
var _temp;
- var _ref2 =
;
+ var _ref2 =
+ /*#__PURE__*/
+
;
return _temp = super(...args), this.subComponent = () => _ref, this.render = () => _ref2, _temp;
}
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/output.js
index fe12eb988d..1abfd5c341 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/member-expression/output.js
@@ -1,10 +1,14 @@
-var _ref =
Sub Component;
+var _ref =
+/*#__PURE__*/
+
Sub Component;
const els = {
subComponent: () => _ref
};
-var _ref2 =
;
+var _ref2 =
+/*#__PURE__*/
+
;
class Component extends React.Component {
constructor(...args) {
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/param-and-var/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/param-and-var/output.js
index 599a2b9297..0060b31496 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/param-and-var/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/param-and-var/output.js
@@ -1,6 +1,8 @@
function fn(Component, obj) {
var data = obj.data,
- _ref =
;
+ _ref =
+ /*#__PURE__*/
+
;
return () => _ref;
}
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-multi/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-multi/output.js
index c039c14143..8b89a78b03 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-multi/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-multi/output.js
@@ -3,7 +3,9 @@ function render(_ref) {
className = _ref.className,
id = _ref.id;
- var _ref2 =
;
+ var _ref2 =
+ /*#__PURE__*/
+
;
return () => _ref2;
}
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-rest/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-rest/output.js
index a00f73f6f4..c457d24158 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-rest/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure-rest/output.js
@@ -4,7 +4,9 @@ function render(_ref) {
id = _ref.id,
props = babelHelpers.objectWithoutProperties(_ref, ["text", "className", "id"]);
- var _ref2 =
;
+ var _ref2 =
+ /*#__PURE__*/
+
;
// intentionally ignoring props
return () => _ref2;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure/output.js
index 272a607c98..f890296a95 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-destructure/output.js
@@ -1,7 +1,9 @@
function render(_ref) {
let text = _ref.text;
- var _ref2 =
;
+ var _ref2 =
+ /*#__PURE__*/
+
;
return () => _ref2;
}
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-reference/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-reference/output.js
index bec3e34993..00492afc72 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-reference/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/parameter-reference/output.js
@@ -1,5 +1,7 @@
function render(text) {
- var _ref =
{text}
;
+ var _ref =
+ /*#__PURE__*/
+
{text}
;
return function () {
return _ref;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-2/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-2/output.js
index 71dfc286ce..0e6144849e 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-2/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-2/output.js
@@ -1,5 +1,7 @@
function render(offset) {
- var _ref =
;
+ var _ref =
+ /*#__PURE__*/
+
;
return function () {
return _ref;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-3/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-3/output.js
index 79c8b1db99..41fa9cc9d3 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-3/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-3/output.js
@@ -1,6 +1,8 @@
const OFFSET = 3;
-var _ref =
;
+var _ref =
+/*#__PURE__*/
+
;
var Foo = React.createClass({
render: function () {
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.js
index 1452baefa3..255829f6ab 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.js
@@ -1,6 +1,8 @@
import Intl from 'react-intl';
-var _ref =
;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist/output.js
index 9df27d0157..49e73a5663 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist/output.js
@@ -1,4 +1,6 @@
-var _ref =
;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression/output.js
index 957dc4a8a2..81c65bf5ed 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression/output.js
@@ -1,4 +1,6 @@
-var _ref =
;
+var _ref =
+/*#__PURE__*/
+
;
var Foo = React.createClass({
render: function () {
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/reassignment/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/reassignment/output.js
index 9eb9d792f1..48b45690df 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/reassignment/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/reassignment/output.js
@@ -1,7 +1,9 @@
function render(text) {
text += "yes";
- var _ref =
{text}
;
+ var _ref =
+ /*#__PURE__*/
+
{text}
;
return function () {
return _ref;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/output.js
index 0424a4d937..285010c075 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export-default/output.js
@@ -7,4 +7,6 @@ class A {
export default class B {}
-var _ref = React.createElement(B, null);
+var _ref =
+/*#__PURE__*/
+React.createElement(B, null);
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/output.js
index b42d9d9366..1192322d7b 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/regression-node-type-export/output.js
@@ -7,4 +7,6 @@ class A {
export class B {}
-var _ref = React.createElement(B, null);
+var _ref =
+/*#__PURE__*/
+React.createElement(B, null);
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/text-children/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/text-children/output.js
index 43898f7413..dc358b421f 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/text-children/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/text-children/output.js
@@ -1,4 +1,6 @@
-var _ref =
+var _ref =
+/*#__PURE__*/
+
Text
;
diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/var/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/var/output.js
index a0bf6d783b..0c7bcb7eb2 100644
--- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/var/output.js
+++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/var/output.js
@@ -1,6 +1,8 @@
function fn(Component) {
var data = "prop",
- _ref =
;
+ _ref =
+ /*#__PURE__*/
+
;
return () => _ref;
}
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js
index dc5c056f68..55beb4d7e3 100644
--- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js
+++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/optimisation.react.constant-elements/output.js
@@ -1,4 +1,6 @@
-var _ref =
+var _ref =
+/*#__PURE__*/
+
diff --git a/packages/babel-traverse/src/path/lib/hoister.js b/packages/babel-traverse/src/path/lib/hoister.js
index 0f6fa03959..edd2738510 100644
--- a/packages/babel-traverse/src/path/lib/hoister.js
+++ b/packages/babel-traverse/src/path/lib/hoister.js
@@ -206,10 +206,11 @@ export default class PathHoister {
// generate declaration and insert it to our point
let uid = attachTo.scope.generateUidIdentifier("ref");
+
const declarator = t.variableDeclarator(uid, this.path.node);
const insertFn = this.attachAfter ? "insertAfter" : "insertBefore";
- attachTo[insertFn]([
+ const [attached] = attachTo[insertFn]([
attachTo.isVariableDeclarator()
? declarator
: t.variableDeclaration("var", [declarator]),
@@ -223,5 +224,9 @@ export default class PathHoister {
}
this.path.replaceWith(t.cloneNode(uid));
+
+ return attachTo.isVariableDeclarator()
+ ? attached.get("init")
+ : attached.get("declarations.0.init");
}
}