diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js index e449330f7b73..bb6aeb996741 100644 --- a/packages/babel-generator/src/printer.js +++ b/packages/babel-generator/src/printer.js @@ -262,6 +262,8 @@ export default class Printer { if (i + 1 === str.length) return; const chaPost = str[i + 1]; if (chaPost !== "/" && chaPost !== "*") return; + // We don't print newlines aroung /*#__PURE__*/ annotations + if (PURE_ANNOTATION_RE.test(str.slice(i + 2, str.length - 2))) return; } this.token("("); this.indent(); diff --git a/packages/babel-helper-builder-react-jsx-experimental/package.json b/packages/babel-helper-builder-react-jsx-experimental/package.json index 5142bc965a17..711aa0b4661a 100644 --- a/packages/babel-helper-builder-react-jsx-experimental/package.json +++ b/packages/babel-helper-builder-react-jsx-experimental/package.json @@ -9,6 +9,7 @@ }, "main": "lib/index.js", "dependencies": { + "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-module-imports": "^7.8.3", "@babel/types": "^7.8.3", "esutils": "^2.0.0" diff --git a/packages/babel-helper-builder-react-jsx-experimental/src/index.js b/packages/babel-helper-builder-react-jsx-experimental/src/index.js index 45532536b93a..2117da3199d2 100644 --- a/packages/babel-helper-builder-react-jsx-experimental/src/index.js +++ b/packages/babel-helper-builder-react-jsx-experimental/src/index.js @@ -1,6 +1,14 @@ import esutils from "esutils"; import * as t from "@babel/types"; import { addNamed, addNamespace, isModule } from "@babel/helper-module-imports"; +import annotateAsPure from "@babel/helper-annotate-as-pure"; + +const DEFAULT = { + importSource: "react", + runtime: "automatic", + pragma: "React.createElement", + pragmaFrag: "React.Fragment", +}; export function helper(babel, options) { const FILE_NAME_VAR = "_jsxFileName"; @@ -17,10 +25,10 @@ export function helper(babel, options) { const IMPORT_NAME_SIZE = options.development ? 3 : 4; const { - importSource: IMPORT_SOURCE_DEFAULT = "react", - runtime: RUNTIME_DEFAULT = "automatic", - pragma: PRAGMA_DEFAULT = "React.createElement", - pragmaFrag: PRAGMA_FRAG_DEFAULT = "React.Fragment", + importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource, + runtime: RUNTIME_DEFAULT = DEFAULT.runtime, + pragma: PRAGMA_DEFAULT = DEFAULT.pragma, + pragmaFrag: PRAGMA_FRAG_DEFAULT = DEFAULT.pragmaFrag, } = options; return { @@ -142,8 +150,14 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, createIdentifierParser(pragmaFrag), ); state.set("@babel/plugin-react-jsx/usedFragment", false); - state.set("@babel/plugin-react-jsx/pragmaSet", pragmaSet); - state.set("@babel/plugin-react-jsx/pragmaFragSet", pragmaFragSet); + state.set( + "@babel/plugin-react-jsx/pragmaSet", + pragma !== DEFAULT.pragma, + ); + state.set( + "@babel/plugin-react-jsx/pragmaFragSet", + pragmaFrag !== DEFAULT.pragmaFrag, + ); } else if (runtime === "automatic") { if (pragmaSet || pragmaFragSet) { throw path.buildCodeFrameError( @@ -190,6 +204,11 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, createIdentifierName(path, "Fragment", importName), ), ); + + state.set( + "@babel/plugin-react-jsx/importSourceSet", + source !== DEFAULT.importSource, + ); } else { throw path.buildCodeFrameError( `Runtime must be either "classic" or "automatic".`, @@ -505,6 +524,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (options.pre) { @@ -577,13 +597,15 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, options.post(state, file); } - return ( + const call = state.call || t.callExpression( path.node.children.length > 1 ? state.jsxStaticCallee : state.jsxCallee, args, - ) - ); + ); + if (state.pure) annotateAsPure(call); + + return call; } // Builds props for React.jsx. This function adds children into the props @@ -633,6 +655,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (options.pre) { @@ -667,13 +690,15 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, options.post(state, file); } - return ( + const call = state.call || t.callExpression( path.node.children.length > 1 ? state.jsxStaticCallee : state.jsxCallee, args, - ) - ); + ); + if (state.pure) annotateAsPure(call); + + return call; } function buildCreateElementFragmentCall(path, file) { @@ -692,6 +717,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (options.pre) { @@ -706,7 +732,12 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, } file.set("@babel/plugin-react-jsx/usedFragment", true); - return state.call || t.callExpression(state.createElementCallee, args); + + const call = + state.call || t.callExpression(state.createElementCallee, args); + if (state.pure) annotateAsPure(call); + + return call; } // Builds JSX into: @@ -733,6 +764,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (options.pre) { @@ -751,7 +783,11 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, options.post(state, file); } - return state.call || t.callExpression(state.createElementCallee, args); + const call = + state.call || t.callExpression(state.createElementCallee, args); + if (state.pure) annotateAsPure(call); + + return call; } /** diff --git a/packages/babel-helper-builder-react-jsx/package.json b/packages/babel-helper-builder-react-jsx/package.json index 25007d3fce69..70ab8be55541 100644 --- a/packages/babel-helper-builder-react-jsx/package.json +++ b/packages/babel-helper-builder-react-jsx/package.json @@ -9,6 +9,7 @@ }, "main": "lib/index.js", "dependencies": { + "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/types": "^7.8.3", "esutils": "^2.0.0" } diff --git a/packages/babel-helper-builder-react-jsx/src/index.js b/packages/babel-helper-builder-react-jsx/src/index.js index b0050c6375f6..5d00f6435d29 100644 --- a/packages/babel-helper-builder-react-jsx/src/index.js +++ b/packages/babel-helper-builder-react-jsx/src/index.js @@ -1,11 +1,13 @@ import esutils from "esutils"; import * as t from "@babel/types"; +import annotateAsPure from "@babel/helper-annotate-as-pure"; type ElementState = { tagExpr: Object, // tag node tagName: ?string, // raw string tag name args: Array, // array of call arguments call?: Object, // optional call property that can be set to override the call expression returned + pure: boolean, // true if the element can be marked with a #__PURE__ annotation }; export default function(opts) { @@ -134,6 +136,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (opts.pre) { @@ -153,7 +156,10 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, opts.post(state, file); } - return state.call || t.callExpression(state.callee, args); + const call = state.call || t.callExpression(state.callee, args); + if (state.pure) annotateAsPure(call); + + return call; } function pushProps(_props, objs) { @@ -248,6 +254,7 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, tagExpr: tagExpr, tagName: tagName, args: args, + pure: false, }; if (opts.pre) { @@ -262,6 +269,10 @@ You can set \`throwIfNamespace: false\` to bypass this warning.`, } file.set("usedFragment", true); - return state.call || t.callExpression(state.callee, args); + + const call = state.call || t.callExpression(state.callee, args); + if (state.pure) annotateAsPure(call); + + return call; } } diff --git a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/jsx-identifier/output.js b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/jsx-identifier/output.js index 5e8476c8d2de..c3c6e9d68cbc 100644 --- a/packages/babel-plugin-transform-block-scoping/test/fixtures/general/jsx-identifier/output.js +++ b/packages/babel-plugin-transform-block-scoping/test/fixtures/general/jsx-identifier/output.js @@ -2,5 +2,5 @@ var arr = []; for (var i = 0; i < 4; ++i) { - arr.push(React.createElement("i", null)); + arr.push( /*#__PURE__*/React.createElement("i", null)); } diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js index 36329369f081..1be8c8d8538b 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/2775/output.js @@ -24,9 +24,9 @@ var RandomComponent = /*#__PURE__*/function (_Component) { babelHelpers.createClass(RandomComponent, [{ key: "render", value: function render() { - return _react["default"].createElement("div", { + return /*#__PURE__*/_react["default"].createElement("div", { className: "sui-RandomComponent" - }, _react["default"].createElement("h2", null, "Hi there!")); + }, /*#__PURE__*/_react["default"].createElement("h2", null, "Hi there!")); } }]); return RandomComponent; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/regression/T6750/output.js b/packages/babel-plugin-transform-classes/test/fixtures/regression/T6750/output.js index c783daf45d59..c9d7b956370b 100644 --- a/packages/babel-plugin-transform-classes/test/fixtures/regression/T6750/output.js +++ b/packages/babel-plugin-transform-classes/test/fixtures/regression/T6750/output.js @@ -6,16 +6,15 @@ Object.defineProperty(exports, "__esModule", { exports["default"] = _default; function _default() { - return (/*#__PURE__*/function () { - function Select() { - babelHelpers.classCallCheck(this, Select); - } + return /*#__PURE__*/function () { + function Select() { + babelHelpers.classCallCheck(this, Select); + } - babelHelpers.createClass(Select, [{ - key: "query", - value: function query(_query) {} - }]); - return Select; - }() - ); + babelHelpers.createClass(Select, [{ + key: "query", + value: function query(_query) {} + }]); + return Select; + }(); } diff --git a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/export-default-arrow-renaming-3/output.js b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/export-default-arrow-renaming-3/output.js index d408ec5652ca..4bfd9a85b302 100644 --- a/packages/babel-plugin-transform-function-name/test/fixtures/function-name/export-default-arrow-renaming-3/output.js +++ b/packages/babel-plugin-transform-function-name/test/fixtures/function-name/export-default-arrow-renaming-3/output.js @@ -7,7 +7,7 @@ exports["default"] = void 0; var _default = function _default(_ref) { var _onClick = _ref.onClick; - return React.createElement("div", { + return /*#__PURE__*/React.createElement("div", { onClick: function onClick() { return _onClick(); } diff --git a/packages/babel-plugin-transform-react-constant-elements/package.json b/packages/babel-plugin-transform-react-constant-elements/package.json index 73c5149a2415..330c8eea88fd 100644 --- a/packages/babel-plugin-transform-react-constant-elements/package.json +++ b/packages/babel-plugin-transform-react-constant-elements/package.json @@ -12,7 +12,6 @@ "babel-plugin" ], "dependencies": { - "@babel/helper-annotate-as-pure": "^7.8.3", "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { diff --git a/packages/babel-plugin-transform-react-constant-elements/src/index.js b/packages/babel-plugin-transform-react-constant-elements/src/index.js index 48d5e2bbc708..4d434bdc3aea 100644 --- a/packages/babel-plugin-transform-react-constant-elements/src/index.js +++ b/packages/babel-plugin-transform-react-constant-elements/src/index.js @@ -1,6 +1,5 @@ import { declare } from "@babel/helper-plugin-utils"; import { types as t } from "@babel/core"; -import annotateAsPure from "@babel/helper-annotate-as-pure"; export default declare((api, options) => { api.assertVersion(7); @@ -107,13 +106,7 @@ export default declare((api, options) => { // Traverse all props passed to this element for immutability. path.traverse(immutabilityVisitor, state); - if (state.isImmutable) { - const hoisted = path.hoist(); - - if (hoisted) { - annotateAsPure(hoisted); - } - } + if (state.isImmutable) path.hoist(); }, }, }; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-2/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-2/output.mjs index ad174780f147..5f4d4762cf4f 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-2/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-2/output.mjs @@ -1,10 +1,10 @@ -var _ref = /*#__PURE__*/
child
; +var _ref =
child
; const AppItem = () => { return _ref; }; -var _ref2 = /*#__PURE__*/
+var _ref2 =

Parent

; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-3/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-3/output.js index ff39e64e15e1..5b5fdfbf7731 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-3/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-3/output.js @@ -1,6 +1,6 @@ -var _ref2 = /*#__PURE__*/
child
; +var _ref2 =
child
; -var _ref3 = /*#__PURE__*/

Parent

; +var _ref3 =

Parent

; (function () { class App extends React.Component { @@ -13,7 +13,7 @@ var _ref3 = /*#__PURE__*/

Parent

; const AppItem = () => { return _ref2; }, - _ref = /*#__PURE__*/
+ _ref =
{_ref3}
; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-4/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-4/output.js index 2e2c88d9e876..7088d18dca32 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-4/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope-4/output.js @@ -1,13 +1,13 @@ -var _ref = /*#__PURE__*/
child
; +var _ref =
child
; -var _ref3 = /*#__PURE__*/

Parent

; +var _ref3 =

Parent

; (function () { const AppItem = () => { return _ref; }; - var _ref2 = /*#__PURE__*/
+ var _ref2 =
{_ref3}
; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope/output.mjs index 348c96869e9b..e7f8ea322a44 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/append-to-end-when-declared-in-scope/output.mjs @@ -5,12 +5,12 @@ export default class App extends React.Component { } -var _ref2 = /*#__PURE__*/
child
; +var _ref2 =
child
; const AppItem = () => { return _ref2; }, - _ref = /*#__PURE__*/
+ _ref =

Parent

; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/children/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/children/output.js index 213c2c03007c..9f725b28e808 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/children/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/children/output.js @@ -1,4 +1,4 @@ -var _ref = /*#__PURE__*/; +var _ref = ; var Foo = React.createClass({ render: function () { diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/output.mjs index 749027ab9bcd..cb11c5579d5b 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/class-assign-unreferenced-param-deopt/output.mjs @@ -1,6 +1,6 @@ import React from 'react'; // Regression test for https://github.com/babel/babel/issues/5552 -var _ref = /*#__PURE__*/
; +var _ref =
; class BugReport extends React.Component { constructor(...args) { diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/compound-assignment/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/compound-assignment/output.mjs index e27ecd786205..ed30e4854564 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/compound-assignment/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/compound-assignment/output.mjs @@ -1,9 +1,9 @@ import React from 'react'; import Loader from 'loader'; -var _ref = /*#__PURE__*/; +var _ref = ; -var _ref2 = /*#__PURE__*/; +var _ref2 = ; const errorComesHere = () => _ref, thisWorksFine = () => _ref2; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/constructor/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/constructor/output.js index d5f01771fb46..e3e86ae68d6e 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/constructor/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/constructor/output.js @@ -1,6 +1,6 @@ var Foo = require("Foo"); -var _ref = /*#__PURE__*/; +var _ref = ; function render() { return _ref; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/deep-constant-violation/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/deep-constant-violation/output.js index 33ca49795e9f..325f0daf7c80 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/deep-constant-violation/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/deep-constant-violation/output.js @@ -1,6 +1,6 @@ -var _ref = /*#__PURE__*/; +var _ref = ; -var _ref2 = /*#__PURE__*/; +var _ref2 = ; function render() { var children = _ref; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-class/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-class/output.mjs index 7669f47c9ff4..060811816d12 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-class/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-class/output.mjs @@ -4,11 +4,11 @@ const Parent = ({}) => _ref; export default Parent; -var _ref2 = /*#__PURE__*/
+var _ref2 =
ChildTextContent
; let Child = () => _ref2, - _ref = /*#__PURE__*/
+ _ref =
; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-declaration/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-declaration/output.js index 8e6ec600decc..878e19404bce 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-declaration/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-declaration/output.js @@ -1,6 +1,6 @@ function render() { const bar = "bar", - _ref = /*#__PURE__*/, + _ref = , renderFoo = () => _ref; return renderFoo(); @@ -10,7 +10,7 @@ function render() { const bar = "bar", renderFoo = () => _ref2, baz = "baz", - _ref2 = /*#__PURE__*/; + _ref2 = ; return renderFoo(); } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params-2/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params-2/output.js index f9637828baa9..86a47eb10a31 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params-2/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params-2/output.js @@ -1,7 +1,7 @@ function render() { var title = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; - var _ref = /*#__PURE__*/; + var _ref = ; return () => _ref; } diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params/output.js b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params/output.js index 246eb04e7132..6780bc3d8930 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params/output.js +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-default-params/output.js @@ -1,6 +1,6 @@ function render(Component) { var text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '', - _ref = /*#__PURE__*/; + _ref = ; return function () { return _ref; diff --git a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-hoc/output.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-hoc/output.mjs index bfce79dae2bf..d1521a3baf4b 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-hoc/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/dont-hoist-before-hoc/output.mjs @@ -6,7 +6,7 @@ const Parent = ({}) => _ref; export default Parent; -var _ref2 = /*#__PURE__*/
+var _ref2 =
ChildTextContent
; @@ -14,6 +14,6 @@ let Child = () => _ref2; Child = HOC(Child); -var _ref = /*#__PURE__*/
+var _ref =
; 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 375f36caf5e9..0e737624dad5 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,5 @@ function render(text) { - var _ref = /*#__PURE__*/{text}; + var _ref = {text}; return function () { return _ref; @@ -9,7 +9,7 @@ function render(text) { var Foo2 = require("Foo"); function createComponent(text) { - var _ref2 = /*#__PURE__*/{text}; + var _ref2 = {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 3e03e5950ad0..2bfa9cf8e676 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,4 @@ -var _ref = /*#__PURE__*/
; +var _ref =
; 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 7eb3a4de9be2..7ec3220a51ab 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,10 @@ -var _ref = /*#__PURE__*/; +var _ref = ; function render() { return _ref; } -var _ref2 = /*#__PURE__*/
; +var _ref2 =
; function render() { 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 c6e76f5c5c43..b0e2cde1adf9 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,7 @@ function render() { var text = getText(); - var _ref = /*#__PURE__*/{text}; + var _ref = {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 9523683a7546..aa7a9994baeb 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,7 @@ function render() { this.component = "div"; - var _ref = /*#__PURE__*/; + var _ref = ; 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 9e1991d502b3..b9e52e3a52ab 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,4 +1,4 @@ -var _ref = /*#__PURE__*/Sub Component; +var _ref = Sub Component; class Component extends React.Component { constructor(...args) { @@ -6,7 +6,7 @@ class Component extends React.Component { this.subComponent = () => _ref; - var _ref2 = /*#__PURE__*/; + var _ref2 = ; this.render = () => _ref2; } 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 1b9ca40148b2..96fc93c58dee 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,10 @@ -var _ref = /*#__PURE__*/Sub Component; +var _ref = Sub Component; const els = { subComponent: () => _ref }; -var _ref2 = /*#__PURE__*/; +var _ref2 = ; 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 dd2a7c88a42c..599a2b929768 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,6 @@ function fn(Component, obj) { var data = obj.data, - _ref = /*#__PURE__*/; + _ref = ; 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 5c4d51c1a140..c039c14143f5 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,7 @@ function render(_ref) { className = _ref.className, id = _ref.id; - var _ref2 = /*#__PURE__*/; + var _ref2 = ; 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 7ac09e4fe0cd..a00f73f6f44f 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,7 @@ function render(_ref) { id = _ref.id, props = babelHelpers.objectWithoutProperties(_ref, ["text", "className", "id"]); - var _ref2 = /*#__PURE__*/; + var _ref2 = ; // 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 8ab40112f442..272a607c98cc 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,7 @@ function render(_ref) { let text = _ref.text; - var _ref2 = /*#__PURE__*/; + var _ref2 = ; 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 b4e518a1bca8..bec3e3499344 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,5 @@ function render(text) { - var _ref = /*#__PURE__*/
{text}
; + var _ref =
{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 ebc185653958..71dfc286ceb0 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,5 @@ function render(offset) { - var _ref = /*#__PURE__*/
; + var _ref =
; 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 6a23987eb26c..79c8b1db9907 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,6 @@ const OFFSET = 3; -var _ref = /*#__PURE__*/
; +var _ref =
; 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.mjs b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.mjs index 4f6b4b4d6585..1452baefa3a7 100644 --- a/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.mjs +++ b/packages/babel-plugin-transform-react-constant-elements/test/fixtures/constant-elements/pure-expression-whitelist-member/output.mjs @@ -1,6 +1,6 @@ import Intl from 'react-intl'; -var _ref = /*#__PURE__*/; 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 aee6d1247854..9df27d0157b4 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,4 @@ -var _ref = /*#__PURE__*/; 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 5b6e175e38e4..957dc4a8a21b 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,4 @@ -var _ref = /*#__PURE__*/
; +var _ref =
; 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 c483d271d53a..9eb9d792f143 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,7 @@ function render(text) { text += "yes"; - var _ref = /*#__PURE__*/
{text}
; + var _ref =
{text}
; return function () { return _ref; 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 aaa8f1769d59..43898f741313 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,4 @@ -var _ref = /*#__PURE__*/
+var _ref =
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 3fe5e702650f..a0bf6d783bed 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,6 @@ function fn(Component) { var data = "prop", - _ref = /*#__PURE__*/; + _ref = ; return () => _ref; } diff --git a/packages/babel-plugin-transform-react-inline-elements/src/index.js b/packages/babel-plugin-transform-react-inline-elements/src/index.js index ab81b6b51a06..925d46032c4f 100644 --- a/packages/babel-plugin-transform-react-inline-elements/src/index.js +++ b/packages/babel-plugin-transform-react-inline-elements/src/index.js @@ -62,6 +62,8 @@ export default declare(api => { if (!hasKey && state.args.length > 2) { state.args.splice(2, 0, t.unaryExpression("void", t.numericLiteral(0))); } + + state.pure = true; }, }); return { diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/children-exists/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/children-exists/output.js index 3aacdd9605c3..a09478386d26 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/children-exists/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/children-exists/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx("div", { children: "foo" }, void 0, "bar"); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component-with-props/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component-with-props/output.js index a512d982d331..fdfed4e48814 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component-with-props/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component-with-props/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Baz, { foo: "bar" }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component/output.js index 0e606e15ed55..54489a5a9b8e 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/component/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ babelHelpers.jsx(Baz, {}); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/expression-container/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/expression-container/output.js index 0b5a3dbe8dc4..2052b4b8a5b5 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/expression-container/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/expression-container/output.js @@ -1,6 +1,6 @@ var TestComponent = React.createClass({ render: function () { - return babelHelpers.jsx("span", { + return /*#__PURE__*/babelHelpers.jsx("span", { className: this.props.someProp }); } diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/output.js index 55fbad164bcb..ef11b9ecda4a 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/fragment/output.js @@ -1 +1,2 @@ -React.createElement(React.Fragment, null, babelHelpers.jsx("span", {}), babelHelpers.jsx("div", {})); +/*#__PURE__*/ +React.createElement(React.Fragment, null, /*#__PURE__*/babelHelpers.jsx("span", {}), /*#__PURE__*/babelHelpers.jsx("div", {})); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element-with-props/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element-with-props/output.js index abff32a5b508..c1d0af001c11 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element-with-props/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element-with-props/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx("foo", { bar: "foo" }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element/output.js index 39a91f19d852..e7dd64e8abed 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/html-element/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ babelHelpers.jsx("foo", {}); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key-computed/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key-computed/output.js index 64a65e8256c7..27854ce106d9 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key-computed/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key-computed/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Foo, { "data-value": "bar" }, "foo" + "baz"); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key/output.js index 6b049a75bd90..03cff11c9be9 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/key/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Foo, { "data-value": "bar" }, "foo"); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/output.js index 27a9501e654d..963b0be35b1f 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/lowercase-member-expression/output.js @@ -4,5 +4,5 @@ var _export = require("./export"); //index.js file function ParentComponent() { - return babelHelpers.jsx(_export.form.TestComponent, {}); + return /*#__PURE__*/babelHelpers.jsx(_export.form.TestComponent, {}); } diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/output.js index fa4e99bf5ea0..51e8f24077e4 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/member-expression/output.js @@ -7,6 +7,6 @@ exports.default = void 0; var _reactBootstrap = require("react-bootstrap"); -var _default = CustomModal = () => babelHelpers.jsx(_reactBootstrap.Modal.Header, {}, void 0, "foobar"); +var _default = CustomModal = () => /*#__PURE__*/babelHelpers.jsx(_reactBootstrap.Modal.Header, {}, void 0, "foobar"); exports.default = _default; diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/multiline/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/multiline/output.js index 0e606e15ed55..54489a5a9b8e 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/multiline/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/multiline/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ babelHelpers.jsx(Baz, {}); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-components/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-components/output.js index 3a860d500559..b6fa7c0282e1 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-components/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-components/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Foo, { className: "foo" -}, void 0, bar, babelHelpers.jsx(Baz, {}, "baz")); +}, void 0, bar, /*#__PURE__*/babelHelpers.jsx(Baz, {}, "baz")); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-html-elements/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-html-elements/output.js index 0b662168ca60..c16ba861e55f 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-html-elements/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested-html-elements/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx("div", { className: "foo" }, void 0, bar); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested/output.js index ca0b66721a8f..98bcf8d65f20 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/nested/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx("div", { className: "foo" -}, void 0, bar, babelHelpers.jsx(Baz, {}, "baz")); +}, void 0, bar, /*#__PURE__*/babelHelpers.jsx(Baz, {}, "baz")); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/ref-deopt/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/ref-deopt/output.js index f0768d27155f..bd841c189317 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/ref-deopt/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/ref-deopt/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Foo, { ref: "bar" }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component-with-props/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component-with-props/output.js index a512d982d331..fdfed4e48814 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component-with-props/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component-with-props/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Baz, { foo: "bar" }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component/output.js index 0e606e15ed55..54489a5a9b8e 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-component/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ babelHelpers.jsx(Baz, {}); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element-with-props/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element-with-props/output.js index abff32a5b508..c1d0af001c11 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element-with-props/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element-with-props/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx("foo", { bar: "foo" }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element/output.js index 39a91f19d852..e7dd64e8abed 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/self-closing-html-element/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ babelHelpers.jsx("foo", {}); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/shorthand-attributes/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/shorthand-attributes/output.js index ffd4e433d9db..90137d5ddfe5 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/shorthand-attributes/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/shorthand-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ babelHelpers.jsx(Foo, { bar: true }); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/spread-deopt/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/spread-deopt/output.js index 5672885bad36..5f16ff6ba3ea 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/spread-deopt/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/inline-elements/spread-deopt/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement(Foo, bar); diff --git a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js index 0eb30c15e366..229a5d2ee9af 100644 --- a/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js +++ b/packages/babel-plugin-transform-react-inline-elements/test/fixtures/regressions/6276/output.js @@ -1,3 +1,3 @@ -var test = babelHelpers.jsx(T, { +var test = /*#__PURE__*/babelHelpers.jsx(T, { default: " some string " }); diff --git a/packages/babel-plugin-transform-react-jsx-development/src/index.js b/packages/babel-plugin-transform-react-jsx-development/src/index.js index b0c0d4d0f43e..4fb52ad62946 100644 --- a/packages/babel-plugin-transform-react-jsx-development/src/index.js +++ b/packages/babel-plugin-transform-react-jsx-development/src/index.js @@ -4,6 +4,8 @@ import { declare } from "@babel/helper-plugin-utils"; import { types as t } from "@babel/core"; export default declare((api, options) => { + const PURE_ANNOTATION = options.pure; + const visitor = helper(api, { pre(state) { const tagName = state.tagName; @@ -20,6 +22,9 @@ export default declare((api, options) => { state.createElementCallee = pass.get( "@babel/plugin-react-jsx/createElementIdentifier", )(); + + state.pure = + PURE_ANNOTATION ?? !pass.get("@babel/plugin-react-jsx/pragmaSet"); } else { state.jsxCallee = pass.get("@babel/plugin-react-jsx/jsxIdentifier")(); state.jsxStaticCallee = pass.get( @@ -28,6 +33,10 @@ export default declare((api, options) => { state.createElementCallee = pass.get( "@babel/plugin-react-jsx/createElementIdentifier", )(); + + state.pure = + PURE_ANNOTATION ?? + !pass.get("@babel/plugin-react-jsx/importSourceSet"); } }, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs index 8b0fc87276dd..dcdeec458630 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/output.mjs @@ -3,23 +3,23 @@ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; import { Fragment as _Fragment } from "react/jsx-dev-runtime"; var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/auto-import-dev/input.js"; -var x = _jsxDEV(_Fragment, { - children: _jsxDEV("div", { - children: [_jsxDEV("div", {}, "1", false, { +var x = /*#__PURE__*/_jsxDEV(_Fragment, { + children: /*#__PURE__*/_jsxDEV("div", { + children: [/*#__PURE__*/_jsxDEV("div", {}, "1", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 7 - }, this), _jsxDEV("div", { + }, this), /*#__PURE__*/_jsxDEV("div", { meow: "wolf" }, "2", false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 7 - }, this), _jsxDEV("div", {}, "3", false, { + }, this), /*#__PURE__*/_jsxDEV("div", {}, "3", false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 7 - }, this), _createElement("div", { ...props, + }, this), /*#__PURE__*/_createElement("div", { ...props, key: "4", __source: { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/classic-runtime/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/classic-runtime/output.js index dc7259198bcf..ae50081c209c 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/classic-runtime/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/classic-runtime/output.js @@ -1,12 +1,12 @@ var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/classic-runtime/input.js"; -var x = React.createElement(React.Fragment, null, React.createElement("div", { +var x = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { __source: { fileName: _jsxFileName, lineNumber: 3, columnNumber: 5 }, __self: this -}, React.createElement("div", { +}, /*#__PURE__*/React.createElement("div", { key: "1", __source: { fileName: _jsxFileName, @@ -14,7 +14,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 9 }, __self: this -}), React.createElement("div", { +}), /*#__PURE__*/React.createElement("div", { key: "2", meow: "wolf", __source: { @@ -23,7 +23,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 9 }, __self: this -}), React.createElement("div", { +}), /*#__PURE__*/React.createElement("div", { key: "3", __source: { fileName: _jsxFileName, @@ -31,7 +31,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 9 }, __self: this -}), React.createElement("div", { ...props, +}), /*#__PURE__*/React.createElement("div", { ...props, key: "4", __source: { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/fragments/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/fragments/output.js index efb7281b2229..9f7c06bf2e6b 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/fragments/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/fragments/output.js @@ -2,8 +2,8 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/fragments/input.js"; -var x = _reactJsxDevRuntime.jsxDEV(_reactJsxDevRuntime.Fragment, { - children: _reactJsxDevRuntime.jsxDEV("div", {}, void 0, false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(_reactJsxDevRuntime.Fragment, { + children: /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 11 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-fragments-with-key/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-fragments-with-key/output.js index 34beb8ddb513..cce20f0ed3b2 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-fragments-with-key/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-fragments-with-key/output.js @@ -2,7 +2,7 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-fragments-with-key/input.js"; -var x = _reactJsxDevRuntime.jsxDEV(React.Fragment, {}, "foo", false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(React.Fragment, {}, "foo", false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 9 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-nonstatic-children/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-nonstatic-children/output.js index 96d880cf0d15..b0fca3139a19 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-nonstatic-children/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-nonstatic-children/output.js @@ -2,12 +2,12 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-nonstatic-children/input.js"; -var x = _reactJsxDevRuntime.jsxDEV("div", { - children: [_reactJsxDevRuntime.jsxDEV("span", {}, "0", false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", { + children: [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, "0", false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 16 - }, this), _reactJsxDevRuntime.jsxDEV("span", {}, "1", false, { + }, this), /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, "1", false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 36 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-static-children/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-static-children/output.js index 69422fd6aaab..b0886b4fb839 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-static-children/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-static-children/output.js @@ -2,16 +2,16 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/handle-static-children/input.js"; -var x = _reactJsxDevRuntime.jsxDEV("div", { - children: [_reactJsxDevRuntime.jsxDEV("span", {}, void 0, false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", { + children: [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 5 - }, this), [_reactJsxDevRuntime.jsxDEV("span", {}, "0", false, { + }, this), [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, "0", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 7 - }, this), _reactJsxDevRuntime.jsxDEV("span", {}, "1", false, { + }, this), /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, "1", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 27 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs index de311163a390..d9eda42cc0fd 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/auto-import-dev-windows/output.mjs @@ -3,23 +3,23 @@ import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime"; import { Fragment as _Fragment } from "react/jsx-dev-runtime"; var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\auto-import-dev-windows\\input.js"; -var x = _jsxDEV(_Fragment, { - children: _jsxDEV("div", { - children: [_jsxDEV("div", {}, "1", false, { +var x = /*#__PURE__*/_jsxDEV(_Fragment, { + children: /*#__PURE__*/_jsxDEV("div", { + children: [/*#__PURE__*/_jsxDEV("div", {}, "1", false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 7 - }, this), _jsxDEV("div", { + }, this), /*#__PURE__*/_jsxDEV("div", { meow: "wolf" }, "2", false, { fileName: _jsxFileName, lineNumber: 5, columnNumber: 7 - }, this), _jsxDEV("div", {}, "3", false, { + }, this), /*#__PURE__*/_jsxDEV("div", {}, "3", false, { fileName: _jsxFileName, lineNumber: 6, columnNumber: 7 - }, this), _createElement("div", { ...props, + }, this), /*#__PURE__*/_createElement("div", { ...props, key: "4", __source: { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/classic-runtime-windows/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/classic-runtime-windows/output.js index 2db556c3bec3..793689c1ccc1 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/classic-runtime-windows/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/classic-runtime-windows/output.js @@ -1,12 +1,12 @@ var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\classic-runtime-windows\\input.js"; -var x = React.createElement(React.Fragment, null, React.createElement("div", { +var x = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { __source: { fileName: _jsxFileName, lineNumber: 3, columnNumber: 5 }, __self: this -}, React.createElement("div", { +}, /*#__PURE__*/React.createElement("div", { key: "1", __source: { fileName: _jsxFileName, @@ -14,7 +14,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 7 }, __self: this -}), React.createElement("div", { +}), /*#__PURE__*/React.createElement("div", { key: "2", meow: "wolf", __source: { @@ -23,7 +23,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 7 }, __self: this -}), React.createElement("div", { +}), /*#__PURE__*/React.createElement("div", { key: "3", __source: { fileName: _jsxFileName, @@ -31,7 +31,7 @@ var x = React.createElement(React.Fragment, null, React.createElement("div", { columnNumber: 7 }, __self: this -}), React.createElement("div", { ...props, +}), /*#__PURE__*/React.createElement("div", { ...props, key: "4", __source: { fileName: _jsxFileName, diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/fragments-windows/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/fragments-windows/output.js index 9c56371d6f71..5810f0270c8f 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/fragments-windows/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/fragments-windows/output.js @@ -2,8 +2,8 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\fragments-windows\\input.js"; -var x = _reactJsxDevRuntime.jsxDEV(_reactJsxDevRuntime.Fragment, { - children: _reactJsxDevRuntime.jsxDEV("div", {}, void 0, false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(_reactJsxDevRuntime.Fragment, { + children: /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 11 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-fragments-with-key-windows/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-fragments-with-key-windows/output.js index 33f7bb2e73a4..577650e5f4d4 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-fragments-with-key-windows/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-fragments-with-key-windows/output.js @@ -2,7 +2,7 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\handle-fragments-with-key-windows\\input.js"; -var x = _reactJsxDevRuntime.jsxDEV(React.Fragment, {}, "foo", false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(React.Fragment, {}, "foo", false, { fileName: _jsxFileName, lineNumber: 1, columnNumber: 9 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-nonstatic-children-windows/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-nonstatic-children-windows/output.js index c05d80a46e19..71a0eb0c2b31 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-nonstatic-children-windows/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-nonstatic-children-windows/output.js @@ -2,12 +2,12 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\handle-nonstatic-children-windows\\input.js"; -var x = _reactJsxDevRuntime.jsxDEV("div", { - children: [_reactJsxDevRuntime.jsxDEV("span", {}, '0', false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", { + children: [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, '0', false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 11 - }, this), _reactJsxDevRuntime.jsxDEV("span", {}, '1', false, { + }, this), /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, '1', false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 31 diff --git a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-static-children-windows/output.js b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-static-children-windows/output.js index 85b5e500405f..af06d57aee61 100644 --- a/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-static-children-windows/output.js +++ b/packages/babel-plugin-transform-react-jsx-development/test/fixtures/windows/handle-static-children-windows/output.js @@ -2,16 +2,16 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\handle-static-children-windows\\input.js"; -var x = _reactJsxDevRuntime.jsxDEV("div", { - children: [_reactJsxDevRuntime.jsxDEV("span", {}, void 0, false, { +var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("div", { + children: [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, void 0, false, { fileName: _jsxFileName, lineNumber: 3, columnNumber: 9 - }, this), [_reactJsxDevRuntime.jsxDEV("span", {}, '0', false, { + }, this), [/*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, '0', false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 11 - }, this), _reactJsxDevRuntime.jsxDEV("span", {}, '1', false, { + }, this), /*#__PURE__*/_reactJsxDevRuntime.jsxDEV("span", {}, '1', false, { fileName: _jsxFileName, lineNumber: 4, columnNumber: 31 diff --git a/packages/babel-plugin-transform-react-jsx/src/transform-automatic.js b/packages/babel-plugin-transform-react-jsx/src/transform-automatic.js index 71f41a5de7cc..543b9ef07133 100644 --- a/packages/babel-plugin-transform-react-jsx/src/transform-automatic.js +++ b/packages/babel-plugin-transform-react-jsx/src/transform-automatic.js @@ -4,6 +4,8 @@ import { declare } from "@babel/helper-plugin-utils"; import { types as t } from "@babel/core"; export default declare((api, options) => { + const PURE_ANNOTATION = options.pure; + const visitor = helper(api, { pre(state) { const tagName = state.tagName; @@ -20,6 +22,9 @@ export default declare((api, options) => { state.createElementCallee = pass.get( "@babel/plugin-react-jsx/createElementIdentifier", )(); + + state.pure = + PURE_ANNOTATION ?? !pass.get("@babel/plugin-react-jsx/pragmaSet"); } else { state.jsxCallee = pass.get("@babel/plugin-react-jsx/jsxIdentifier")(); state.jsxStaticCallee = pass.get( @@ -28,6 +33,10 @@ export default declare((api, options) => { state.createElementCallee = pass.get( "@babel/plugin-react-jsx/createElementIdentifier", )(); + + state.pure = + PURE_ANNOTATION ?? + !pass.get("@babel/plugin-react-jsx/importSourceSet"); } }, diff --git a/packages/babel-plugin-transform-react-jsx/src/transform-classic.js b/packages/babel-plugin-transform-react-jsx/src/transform-classic.js index e76d29b034f3..eee2ab253380 100644 --- a/packages/babel-plugin-transform-react-jsx/src/transform-classic.js +++ b/packages/babel-plugin-transform-react-jsx/src/transform-classic.js @@ -3,12 +3,18 @@ import jsx from "@babel/plugin-syntax-jsx"; import helper from "@babel/helper-builder-react-jsx"; import { types as t } from "@babel/core"; +const DEFAULT = { + pragma: "React.createElement", + pragmaFrag: "React.Fragment", +}; + export default declare((api, options) => { const THROW_IF_NAMESPACE = options.throwIfNamespace === undefined ? true : !!options.throwIfNamespace; - const PRAGMA_DEFAULT = options.pragma || "React.createElement"; - const PRAGMA_FRAG_DEFAULT = options.pragmaFrag || "React.Fragment"; + const PRAGMA_DEFAULT = options.pragma || DEFAULT.pragma; + const PRAGMA_FRAG_DEFAULT = options.pragmaFrag || DEFAULT.pragmaFrag; + const PURE_ANNOTATION = options.pure; const JSX_ANNOTATION_REGEX = /\*?\s*@jsx\s+([^\s]+)/; const JSX_FRAG_ANNOTATION_REGEX = /\*?\s*@jsxFrag\s+([^\s]+)/; @@ -35,6 +41,7 @@ export default declare((api, options) => { post(state, pass) { state.callee = pass.get("jsxIdentifier")(); + state.pure = PURE_ANNOTATION ?? !pass.get("pragmaSet"); }, throwIfNamespace: THROW_IF_NAMESPACE, @@ -46,20 +53,16 @@ export default declare((api, options) => { let pragma = PRAGMA_DEFAULT; let pragmaFrag = PRAGMA_FRAG_DEFAULT; - let pragmaSet = !!options.pragma; - let pragmaFragSet = !!options.pragmaFrag; if (file.ast.comments) { for (const comment of (file.ast.comments: Array)) { const jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value); if (jsxMatches) { pragma = jsxMatches[1]; - pragmaSet = true; } const jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(comment.value); if (jsxFragMatches) { pragmaFrag = jsxFragMatches[1]; - pragmaFragSet = true; } } } @@ -67,8 +70,8 @@ export default declare((api, options) => { state.set("jsxIdentifier", createIdentifierParser(pragma)); state.set("jsxFragIdentifier", createIdentifierParser(pragmaFrag)); state.set("usedFragment", false); - state.set("pragmaSet", pragmaSet); - state.set("pragmaFragSet", pragmaFragSet); + state.set("pragmaSet", pragma !== DEFAULT.pragma); + state.set("pragmaFragSet", pragmaFrag !== DEFAULT.pragmaFrag); }, exit(path, state) { if ( diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-module/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-module/output.mjs index 386cac2a472a..00a9fb933326 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-module/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-module/output.mjs @@ -3,11 +3,11 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; -var x = _jsx(_Fragment, { - children: _jsxs("div", { - children: [_jsx("div", {}, "1"), _jsx("div", { +var x = /*#__PURE__*/_jsx(_Fragment, { + children: /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("div", {}, "1"), /*#__PURE__*/_jsx("div", { meow: "wolf" - }, "2"), _jsx("div", {}, "3"), _createElement("div", { ...props, + }, "2"), /*#__PURE__*/_jsx("div", {}, "3"), /*#__PURE__*/_createElement("div", { ...props, key: "4" })] }) diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-script/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-script/output.js index 9c3f75a6d6dc..61a0eebb30ce 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-script/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/auto-import-react-source-type-script/output.js @@ -2,11 +2,11 @@ var _react = require("react"); var _reactJsxRuntime = require("react/jsx-runtime"); -var x = _reactJsxRuntime.jsx(_reactJsxRuntime.Fragment, { - children: _reactJsxRuntime.jsxs("div", { - children: [_reactJsxRuntime.jsx("div", {}, "1"), _reactJsxRuntime.jsx("div", { +var x = /*#__PURE__*/_reactJsxRuntime.jsx(_reactJsxRuntime.Fragment, { + children: /*#__PURE__*/_reactJsxRuntime.jsxs("div", { + children: [/*#__PURE__*/_reactJsxRuntime.jsx("div", {}, "1"), /*#__PURE__*/_reactJsxRuntime.jsx("div", { meow: "wolf" - }, "2"), _reactJsxRuntime.jsx("div", {}, "3"), _react.createElement("div", { ...props, + }, "2"), /*#__PURE__*/_reactJsxRuntime.jsx("div", {}, "3"), /*#__PURE__*/_react.createElement("div", { ...props, key: "4" })] }) diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-module/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-module/output.mjs index bec94b2a347f..bd4dc3f85039 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-module/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-module/output.mjs @@ -15,11 +15,11 @@ const Bar = () => { var jsx = 1; var _jsx = 2; - return _jsx2("div", {}); + return /*#__PURE__*/_jsx2("div", {}); } ; - return _jsx2("span", {}); + return /*#__PURE__*/_jsx2("span", {}); }; }; }; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-script/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-script/output.js index cb5ea61c1ae9..8784a681200d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-script/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/complicated-scope-script/output.js @@ -15,11 +15,11 @@ const Bar = () => { var jsx = 1; var _jsx = 2; - return _reactJsxRuntime.jsx("div", {}); + return /*#__PURE__*/_reactJsxRuntime.jsx("div", {}); } ; - return _reactJsxRuntime.jsx("span", {}); + return /*#__PURE__*/_reactJsxRuntime.jsx("span", {}); }; }; }; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/react-defined/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/react-defined/output.mjs index f4eec3ebc104..18af1b0b5e21 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/react-defined/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextAutoImport/react-defined/output.mjs @@ -6,10 +6,10 @@ var y = react.createElement("div", { foo: 1 }); -var x = _jsxs("div", { - children: [_jsx("div", {}, "1"), _jsx("div", { +var x = /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("div", {}, "1"), /*#__PURE__*/_jsx("div", { meow: "wolf" - }, "2"), _jsx("div", {}, "3"), _createElement("div", { ...props, + }, "2"), /*#__PURE__*/_jsx("div", {}, "3"), /*#__PURE__*/_createElement("div", { ...props, key: "4" })] }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/adds-appropriate-newlines-when-using-spread-attribute/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/adds-appropriate-newlines-when-using-spread-attribute/output.mjs index a13dad887a47..2c3a2180d2ec 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/adds-appropriate-newlines-when-using-spread-attribute/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/adds-appropriate-newlines-when-using-spread-attribute/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx(Component, { ...props, sound: "moo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/arrow-functions/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/arrow-functions/output.mjs index 28e5fdfc6a2a..e5a605c67c18 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/arrow-functions/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/arrow-functions/output.mjs @@ -4,7 +4,7 @@ var foo = function () { var _this = this; return function () { - return _jsx(_this, {}); + return /*#__PURE__*/_jsx(_this, {}); }; }; @@ -12,6 +12,6 @@ var bar = function () { var _this2 = this; return function () { - return _jsx(_this2.foo, {}); + return /*#__PURE__*/_jsx(_this2.foo, {}); }; }; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/assignment/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/assignment/output.mjs index 4b779c6c7647..05860f319a72 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/assignment/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/assignment/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var div = _jsx(Component, { ...props, +var div = /*#__PURE__*/_jsx(Component, { ...props, foo: "bar" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/concatenates-adjacent-string-literals/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/concatenates-adjacent-string-literals/output.mjs index 9d0b0f28a2ed..303129243f5e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/concatenates-adjacent-string-literals/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/concatenates-adjacent-string-literals/output.mjs @@ -1,8 +1,8 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; -var x = _jsxs("div", { - children: ["foo", "bar", "baz", _jsx("div", { +var x = /*#__PURE__*/_jsxs("div", { + children: ["foo", "bar", "baz", /*#__PURE__*/_jsx("div", { children: "buz bang" }), "qux", null, "quack"] }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/dont-coerce-expression-containers/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/dont-coerce-expression-containers/output.mjs index e3d32ba4f9be..c4264e2580e0 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/dont-coerce-expression-containers/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/dont-coerce-expression-containers/output.mjs @@ -1,5 +1,6 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; +/*#__PURE__*/ _jsxs(Text, { children: ["To get started, edit index.ios.js!!!", "\n", "Press Cmd+R to reload"] }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-key/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-key/output.mjs index 2de900d3a39a..93d0763c4e17 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-key/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-key/output.mjs @@ -1,4 +1,4 @@ import { jsx as _jsx } from "react/jsx-runtime"; import * as React from "react"; -var x = _jsx(React.Fragment, {}, "foo"); \ No newline at end of file +var x = /*#__PURE__*/_jsx(React.Fragment, {}, "foo"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-no-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-no-children/output.mjs index 0244f87df146..a749832fa170 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-no-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments-with-no-children/output.mjs @@ -1,4 +1,4 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; -var x = _jsx(_Fragment, {}); \ No newline at end of file +var x = /*#__PURE__*/_jsx(_Fragment, {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments/output.mjs index 19103d494e8d..b34f1fa72cf7 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-fragments/output.mjs @@ -1,6 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; -var x = _jsx(_Fragment, { - children: _jsx("div", {}) +var x = /*#__PURE__*/_jsx(_Fragment, { + children: /*#__PURE__*/_jsx("div", {}) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-nonstatic-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-nonstatic-children/output.mjs index 26f074358c1a..1b19cdfcbdbf 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-nonstatic-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-nonstatic-children/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { - children: [_jsx("span", {}, '0'), _jsx("span", {}, '1')] -}); \ No newline at end of file +var x = /*#__PURE__*/_jsx("div", { + children: [/*#__PURE__*/_jsx("span", {}, '0'), /*#__PURE__*/_jsx("span", {}, '1')] +}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-static-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-static-children/output.mjs index 7d6867ace015..b1451ada1901 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-static-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/handle-static-children/output.mjs @@ -1,6 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; -var x = _jsxs("div", { - children: [_jsx("span", {}), [_jsx("span", {}, '0'), _jsx("span", {}, '1')]] -}); \ No newline at end of file +var x = /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("span", {}), [/*#__PURE__*/_jsx("span", {}, '0'), /*#__PURE__*/_jsx("span", {}, '1')]] +}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/honor-custom-jsx-comment/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/honor-custom-jsx-comment/output.mjs index dd50d9528b6e..dbfa96810678 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/honor-custom-jsx-comment/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/honor-custom-jsx-comment/output.mjs @@ -1,13 +1,14 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx(Foo, {}); -var profile = _jsxs("div", { - children: [_jsx("img", { +var profile = /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("img", { src: "avatar.png", className: "profile" - }), _jsx("h3", { + }), /*#__PURE__*/_jsx("h3", { children: [user.firstName, user.lastName].join(" ") })] -}); \ No newline at end of file +}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-with-retainlines-option/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-with-retainlines-option/output.mjs index 028212c14899..81cfa808941f 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-with-retainlines-option/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-with-retainlines-option/output.mjs @@ -1 +1 @@ -import { jsx as _jsx } from "react/jsx-runtime";var div = _jsx("div", { children: "test" }); +import { jsx as _jsx } from "react/jsx-runtime";var div = /*#__PURE__*/_jsx("div", { children: "test" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-without-retainlines-option/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-without-retainlines-option/output.mjs index 439bf254fdc1..e74b251a647e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-without-retainlines-option/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/jsx-without-retainlines-option/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var div = _jsx("div", { +var div = /*#__PURE__*/_jsx("div", { children: "test" -}); \ No newline at end of file +}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/key-undefined-works/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/key-undefined-works/output.mjs index 793e880d0be0..3c78adf144f7 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/key-undefined-works/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/key-undefined-works/output.mjs @@ -3,6 +3,6 @@ const props = { foo: true }; -var x = _createElement("div", { ...props, +var x = /*#__PURE__*/_createElement("div", { ...props, key: undefined }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/optimisation.react.constant-elements/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/optimisation.react.constant-elements/output.mjs index 0b217c67e6d8..188cfa91ed06 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/optimisation.react.constant-elements/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/optimisation.react.constant-elements/output.mjs @@ -1,4 +1,4 @@ -var _ref = /*#__PURE__*/
+var _ref =
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-add-quotes-es3/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-add-quotes-es3/output.mjs index cc534377ffc5..a57a04a49508 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-add-quotes-es3/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-add-quotes-es3/output.mjs @@ -1,6 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var es3 = _jsx(F, { +var es3 = /*#__PURE__*/_jsx(F, { aaa: true, "new": true, "const": true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-constructor-as-prop/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-constructor-as-prop/output.mjs index 6335551d5caf..1a28ef6db34e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-constructor-as-prop/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-constructor-as-prop/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx(Component, { constructor: "foo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-deeper-js-namespacing/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-deeper-js-namespacing/output.mjs index a3932e252e16..9aa4c3656720 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-deeper-js-namespacing/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-deeper-js-namespacing/output.mjs @@ -1,3 +1,4 @@ import { jsx as _jsx } from "react/jsx-runtime"; -_jsx(Namespace.DeepNamespace.Component, {}); \ No newline at end of file +/*#__PURE__*/ +_jsx(Namespace.DeepNamespace.Component, {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-elements-as-attributes/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-elements-as-attributes/output.mjs index f78723563c34..9d18ed3e73f0 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-elements-as-attributes/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-elements-as-attributes/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { - attr: _jsx("div", {}) + attr: /*#__PURE__*/_jsx("div", {}) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-js-namespacing/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-js-namespacing/output.mjs index 068c945bc516..c0b46c897498 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-js-namespacing/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-js-namespacing/output.mjs @@ -1,3 +1,4 @@ import { jsx as _jsx } from "react/jsx-runtime"; -_jsx(Namespace.Component, {}); \ No newline at end of file +/*#__PURE__*/ +_jsx(Namespace.Component, {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-nested-fragments/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-nested-fragments/output.mjs index d549233634b6..89cc0c22a809 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-nested-fragments/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-allow-nested-fragments/output.mjs @@ -2,18 +2,19 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; import { Fragment as _Fragment } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { - children: _jsxs(_Fragment, { - children: [_jsxs(_Fragment, { - children: [_jsx("span", { + children: /*#__PURE__*/_jsxs(_Fragment, { + children: [/*#__PURE__*/_jsxs(_Fragment, { + children: [/*#__PURE__*/_jsx("span", { children: "Hello" - }), _jsx("span", { + }), /*#__PURE__*/_jsx("span", { children: "world" })] - }), _jsxs(_Fragment, { - children: [_jsx("span", { + }), /*#__PURE__*/_jsxs(_Fragment, { + children: [/*#__PURE__*/_jsx("span", { children: "Goodbye" - }), _jsx("span", { + }), /*#__PURE__*/_jsx("span", { children: "world" })] })] diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-avoid-wrapping-in-extra-parens-if-not-needed/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-avoid-wrapping-in-extra-parens-if-not-needed/output.mjs index 4e5907bd05c3..99f063b7fdd6 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-avoid-wrapping-in-extra-parens-if-not-needed/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-avoid-wrapping-in-extra-parens-if-not-needed/output.mjs @@ -1,17 +1,17 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { - children: _jsx(Component, {}) +var x = /*#__PURE__*/_jsx("div", { + children: /*#__PURE__*/_jsx(Component, {}) }); -var x = _jsx("div", { +var x = /*#__PURE__*/_jsx("div", { children: props.children }); -var x = _jsx(Composite, { +var x = /*#__PURE__*/_jsx(Composite, { children: props.children }); -var x = _jsx(Composite, { - children: _jsx(Composite2, {}) +var x = /*#__PURE__*/_jsx(Composite, { + children: /*#__PURE__*/_jsx(Composite2, {}) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-tags/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-tags/output.mjs index b35b58bc54a6..dac95436f8e9 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-tags/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-tags/output.mjs @@ -1,3 +1,3 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", {}); \ No newline at end of file +var x = /*#__PURE__*/_jsx("div", {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-text/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-text/output.mjs index 59f4813364f3..7791e6759733 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-text/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-convert-simple-text/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { +var x = /*#__PURE__*/_jsx("div", { children: "text" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxattribute/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxattribute/output.mjs index 2d3ad6e2acb9..9a5aedeff449 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxattribute/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxattribute/output.mjs @@ -1,13 +1,16 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { id: "w\xF4w" }); +/*#__PURE__*/ _jsx("div", { id: "\\w" }); +/*#__PURE__*/ _jsx("div", { id: "w < w" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxtext/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxtext/output.mjs index 21926fc11b23..32cb47cd42ed 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxtext/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-escape-xhtml-jsxtext/output.mjs @@ -1,38 +1,47 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { children: "wow" }); +/*#__PURE__*/ _jsx("div", { children: "w\xF4w" }); +/*#__PURE__*/ _jsx("div", { children: "w & w" }); +/*#__PURE__*/ _jsx("div", { children: "w & w" }); +/*#__PURE__*/ _jsx("div", { children: "w \xA0 w" }); +/*#__PURE__*/ _jsx("div", { children: "this should not parse as unicode: \\u00a0" }); +/*#__PURE__*/ _jsx("div", { children: "this should parse as nbsp: \xA0 " }); +/*#__PURE__*/ _jsxs("div", { children: ["this should parse as unicode: ", '\u00a0 '] }); +/*#__PURE__*/ _jsx("div", { children: "w < w" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-attributed-elements/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-attributed-elements/output.mjs index c8bd7d9ca43e..27287d025dae 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-attributed-elements/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-attributed-elements/output.mjs @@ -3,13 +3,13 @@ import { jsxs as _jsxs } from "react/jsx-runtime"; var HelloMessage = React.createClass({ displayName: "HelloMessage", render: function () { - return _jsxs("div", { + return /*#__PURE__*/_jsxs("div", { children: ["Hello ", this.props.name] }); } }); -React.render(_jsx(HelloMessage, { - name: _jsx("span", { +React.render( /*#__PURE__*/_jsx(HelloMessage, { + name: /*#__PURE__*/_jsx("span", { children: "Sebastian" }) }), mountNode); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-has-own-property-correctly/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-has-own-property-correctly/output.mjs index 13b9b81dd532..7c7ac7d56bbf 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-has-own-property-correctly/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-handle-has-own-property-correctly/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("hasOwnProperty", { children: "testing" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-have-correct-comma-in-nested-children/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-have-correct-comma-in-nested-children/output.mjs index 98492e28e535..ffb137dfab63 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-have-correct-comma-in-nested-children/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-have-correct-comma-in-nested-children/output.mjs @@ -1,10 +1,10 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; -var x = _jsxs("div", { - children: [_jsx("div", { - children: _jsx("br", {}) - }), _jsxs(Component, { - children: [foo, _jsx("br", {}), bar] - }), _jsx("br", {})] +var x = /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("div", { + children: /*#__PURE__*/_jsx("br", {}) + }), /*#__PURE__*/_jsxs(Component, { + children: [foo, /*#__PURE__*/_jsx("br", {}), bar] + }), /*#__PURE__*/_jsx("br", {})] }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-insert-commas-after-expressions-before-whitespace/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-insert-commas-after-expressions-before-whitespace/output.mjs index c054ae2ac670..a7dc56ee3195 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-insert-commas-after-expressions-before-whitespace/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-insert-commas-after-expressions-before-whitespace/output.mjs @@ -1,6 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { +var x = /*#__PURE__*/_jsx("div", { attr1: "foo" + "bar", attr2: "foo" + "bar" + "baz" + "bug", attr3: "foo" + "bar" + "baz" + "bug", diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-add-quotes-to-identifier-names/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-add-quotes-to-identifier-names/output.mjs index 92604cf540d7..210066ec1feb 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-add-quotes-to-identifier-names/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-add-quotes-to-identifier-names/output.mjs @@ -1,6 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var e = _jsx(F, { +var e = /*#__PURE__*/_jsx(F, { aaa: true, new: true, const: true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-mangle-expressioncontainer-attribute-values/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-mangle-expressioncontainer-attribute-values/output.mjs index f00d3908f224..198de8a24158 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-mangle-expressioncontainer-attribute-values/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-mangle-expressioncontainer-attribute-values/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("button", { "data-value": "a value\n with\nnewlines\n and spaces", children: "Button" diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.mjs index 7c75d440f36e..86f0e9eaecea 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { children: "\xA0 " }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-tags-with-a-single-child-of-nbsp/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-tags-with-a-single-child-of-nbsp/output.mjs index 4cd811612d0a..6a0ea18e16cc 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-tags-with-a-single-child-of-nbsp/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-not-strip-tags-with-a-single-child-of-nbsp/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("div", { children: "\xA0" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-comments-between-props/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-comments-between-props/output.mjs index 0a9d389b76ba..7b0923e09649 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-comments-between-props/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-comments-between-props/output.mjs @@ -1,10 +1,10 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { +var x = /*#__PURE__*/_jsx("div", { /* a multi-line comment */ attr1: "foo", - children: _jsx("span", { + children: /*#__PURE__*/_jsx("span", { // a double-slash comment attr2: "bar" }) diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-keys/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-keys/output.mjs index 6d3806f422b4..3b72b3dc762e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-keys/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-keys/output.mjs @@ -1,8 +1,8 @@ import { jsx as _jsx } from "react/jsx-runtime"; import { jsxs as _jsxs } from "react/jsx-runtime"; -var x = _jsxs("div", { - children: [_jsx("div", {}, "1"), _jsx("div", { +var x = /*#__PURE__*/_jsxs("div", { + children: [/*#__PURE__*/_jsx("div", {}, "1"), /*#__PURE__*/_jsx("div", { meow: "wolf" - }, "2"), _jsx("div", {}, "3")] -}); \ No newline at end of file + }, "2"), /*#__PURE__*/_jsx("div", {}, "3")] +}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-null-prop-spread/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-null-prop-spread/output.mjs index b50ab710c577..075d0ab77a09 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-null-prop-spread/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-properly-handle-null-prop-spread/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; var foo = null; -var x = _jsx("div", { ...foo +var x = /*#__PURE__*/_jsx("div", { ...foo }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-quote-jsx-attributes/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-quote-jsx-attributes/output.mjs index 65841ee76afb..6644401db9a0 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-quote-jsx-attributes/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-quote-jsx-attributes/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("button", { "data-value": "a value", children: "Button" diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-support-xml-namespaces-if-flag/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-support-xml-namespaces-if-flag/output.mjs index 6b1a400adbc7..a1da85af076e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-support-xml-namespaces-if-flag/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-support-xml-namespaces-if-flag/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx("f:image", { "n:attr": true }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-transform-known-hyphenated-tags/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-transform-known-hyphenated-tags/output.mjs index bfb38b62b4e6..2ea1f6082aca 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-transform-known-hyphenated-tags/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-transform-known-hyphenated-tags/output.mjs @@ -1,3 +1,4 @@ import { jsx as _jsx } from "react/jsx-runtime"; -_jsx("font-face", {}); \ No newline at end of file +/*#__PURE__*/ +_jsx("font-face", {}); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-createElement-when-key-comes-after-spread/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-createElement-when-key-comes-after-spread/output.mjs index 5fe42670bb00..312d7cfc2a8a 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-createElement-when-key-comes-after-spread/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-createElement-when-key-comes-after-spread/output.mjs @@ -1,6 +1,6 @@ import { createElement as _createElement } from "react"; -var x = _createElement("div", { ...props, +var x = /*#__PURE__*/_createElement("div", { ...props, key: "1", foo: "bar" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-jsx-when-key-comes-before-spread/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-jsx-when-key-comes-before-spread/output.mjs index 7e4836adbaee..5e449874dd87 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-jsx-when-key-comes-before-spread/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/should-use-jsx-when-key-comes-before-spread/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var x = _jsx("div", { ...props, +var x = /*#__PURE__*/_jsx("div", { ...props, foo: "bar" }, "1"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/this-tag-name/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/this-tag-name/output.mjs index b27f50e65bc0..eb3f1f63a15b 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/this-tag-name/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/this-tag-name/output.mjs @@ -1,5 +1,5 @@ import { jsx as _jsx } from "react/jsx-runtime"; -var div = _jsx(this.foo, { +var div = /*#__PURE__*/_jsx(this.foo, { children: "test" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-last-spread-attributes/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-last-spread-attributes/output.mjs index bad39dd847c3..cc9c33d709a1 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-last-spread-attributes/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-last-spread-attributes/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx(Component, { y: 2, z: true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-middle-spread-attributes/output.mjs b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-middle-spread-attributes/output.mjs index 11c49ec080c1..c63d50f6fcbb 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-middle-spread-attributes/output.mjs +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReact/wraps-props-in-react-spread-for-middle-spread-attributes/output.mjs @@ -1,5 +1,6 @@ import { jsx as _jsx } from "react/jsx-runtime"; +/*#__PURE__*/ _jsx(Component, { y: 2, ...x, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/adds-appropriate-newlines-when-using-spread-attribute/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/adds-appropriate-newlines-when-using-spread-attribute/output.js index 921266525f49..fae9bf83c1fd 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/adds-appropriate-newlines-when-using-spread-attribute/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/adds-appropriate-newlines-when-using-spread-attribute/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Component, { ...props, sound: "moo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/arrow-functions/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/arrow-functions/output.js index 2319716dfc1e..9efe9c1f81c1 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/arrow-functions/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/arrow-functions/output.js @@ -3,7 +3,7 @@ var foo = function () { var _this = this; return function () { - return React.createElement(_this, null); + return /*#__PURE__*/React.createElement(_this, null); }; }; @@ -11,6 +11,6 @@ var bar = function () { var _this2 = this; return function () { - return React.createElement(_this2.foo, null); + return /*#__PURE__*/React.createElement(_this2.foo, null); }; }; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/assignment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/assignment/output.js index 2d33efe028f1..ca1e5ccf7a27 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/assignment/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/assignment/output.js @@ -1,4 +1,4 @@ /** @jsxRuntime classic */ -var div = React.createElement(Component, { ...props, +var div = /*#__PURE__*/React.createElement(Component, { ...props, foo: "bar" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/concatenates-adjacent-string-literals/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/concatenates-adjacent-string-literals/output.js index 18a64b8eaa8a..8a2a3cc5e614 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/concatenates-adjacent-string-literals/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/concatenates-adjacent-string-literals/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null, "foo", "bar", "baz", React.createElement("div", null, "buz bang"), "qux", null, "quack"); +var x = /*#__PURE__*/React.createElement("div", null, "foo", "bar", "baz", /*#__PURE__*/React.createElement("div", null, "buz bang"), "qux", null, "quack"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/dont-coerce-expression-containers/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/dont-coerce-expression-containers/output.js index 4c34d75664eb..2f9477527194 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/dont-coerce-expression-containers/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/dont-coerce-expression-containers/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Text, null, "To get started, edit index.ios.js!!!", "\n", "Press Cmd+R to reload"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-with-retainlines-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-with-retainlines-option/output.js index f356827adf0d..2400c365d313 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-with-retainlines-option/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-with-retainlines-option/output.js @@ -1,3 +1,3 @@ /** @jsxRuntime classic */ -var div = React.createElement("div", null, "test"); +var div = /*#__PURE__*/React.createElement("div", null, "test"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-without-retainlines-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-without-retainlines-option/output.js index 2833a1567b3c..43741ba3ba10 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-without-retainlines-option/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/jsx-without-retainlines-option/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var div = React.createElement("div", null, "test"); +var div = /*#__PURE__*/React.createElement("div", null, "test"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-add-quotes-es3/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-add-quotes-es3/output.js index cf80f498eee1..f6df48def162 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-add-quotes-es3/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-add-quotes-es3/output.js @@ -1,5 +1,5 @@ /** @jsxRuntime classic */ -var es3 = React.createElement(F, { +var es3 = /*#__PURE__*/React.createElement(F, { aaa: true, "new": true, "const": true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-constructor-as-prop/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-constructor-as-prop/output.js index 1156e9ad21e5..0254eb89ac3d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-constructor-as-prop/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-constructor-as-prop/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Component, { constructor: "foo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-deeper-js-namespacing/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-deeper-js-namespacing/output.js index f65f2feac3a1..35f62488191e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-deeper-js-namespacing/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-deeper-js-namespacing/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Namespace.DeepNamespace.Component, null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-elements-as-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-elements-as-attributes/output.js index 857f385cb595..58f1a3e44b69 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-elements-as-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-elements-as-attributes/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("div", { - attr: React.createElement("div", null) + attr: /*#__PURE__*/React.createElement("div", null) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-js-namespacing/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-js-namespacing/output.js index fff105f6d0d2..8155fe4bee44 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-js-namespacing/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-js-namespacing/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Namespace.Component, null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-nested-fragments/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-nested-fragments/output.js index 60487d4536f4..57aa42727bc2 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-nested-fragments/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-allow-nested-fragments/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ -React.createElement("div", null, React.createElement(React.Fragment, null, React.createElement(React.Fragment, null, React.createElement("span", null, "Hello"), React.createElement("span", null, "world")), React.createElement(React.Fragment, null, React.createElement("span", null, "Goodbye"), React.createElement("span", null, "world")))); + +/*#__PURE__*/ +React.createElement("div", null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Hello"), /*#__PURE__*/React.createElement("span", null, "world")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Goodbye"), /*#__PURE__*/React.createElement("span", null, "world")))); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js index 09e73767482e..c930341f467f 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js @@ -1,5 +1,5 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null, React.createElement(Component, null)); -var x = React.createElement("div", null, props.children); -var x = React.createElement(Composite, null, props.children); -var x = React.createElement(Composite, null, React.createElement(Composite2, null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Component, null)); +var x = /*#__PURE__*/React.createElement("div", null, props.children); +var x = /*#__PURE__*/React.createElement(Composite, null, props.children); +var x = /*#__PURE__*/React.createElement(Composite, null, /*#__PURE__*/React.createElement(Composite2, null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-tags/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-tags/output.js index 381438c5ff9a..a52c7633a135 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-tags/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-tags/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null); +var x = /*#__PURE__*/React.createElement("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-text/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-text/output.js index de532be0e81c..93df9c804ead 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-text/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-convert-simple-text/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null, "text"); +var x = /*#__PURE__*/React.createElement("div", null, "text"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxattribute/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxattribute/output.js index 62d7d5b7b388..b0727d295e1b 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxattribute/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxattribute/output.js @@ -1,10 +1,16 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("div", { id: "w\xF4w" }); + +/*#__PURE__*/ React.createElement("div", { id: "\\w" }); + +/*#__PURE__*/ React.createElement("div", { id: "w < w" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxtext/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxtext/output.js index f454df922d7b..c4288df1dd0f 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxtext/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-escape-xhtml-jsxtext/output.js @@ -1,10 +1,28 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("div", null, "wow"); + +/*#__PURE__*/ React.createElement("div", null, "w\xF4w"); + +/*#__PURE__*/ React.createElement("div", null, "w & w"); + +/*#__PURE__*/ React.createElement("div", null, "w & w"); + +/*#__PURE__*/ React.createElement("div", null, "w \xA0 w"); + +/*#__PURE__*/ React.createElement("div", null, "this should not parse as unicode: \\u00a0"); + +/*#__PURE__*/ React.createElement("div", null, "this should parse as nbsp: \xA0 "); + +/*#__PURE__*/ React.createElement("div", null, "this should parse as unicode: ", '\u00a0 '); + +/*#__PURE__*/ React.createElement("div", null, "w < w"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-attributed-elements/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-attributed-elements/output.js index 1243c0396ccd..b23971257af1 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-attributed-elements/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-attributed-elements/output.js @@ -2,9 +2,9 @@ var HelloMessage = React.createClass({ displayName: "HelloMessage", render: function () { - return React.createElement("div", null, "Hello ", this.props.name); + return /*#__PURE__*/React.createElement("div", null, "Hello ", this.props.name); } }); -React.render(React.createElement(HelloMessage, { - name: React.createElement("span", null, "Sebastian") +React.render( /*#__PURE__*/React.createElement(HelloMessage, { + name: /*#__PURE__*/React.createElement("span", null, "Sebastian") }), mountNode); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-has-own-property-correctly/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-has-own-property-correctly/output.js index 6712b7d9ed02..821ec2ada955 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-has-own-property-correctly/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-handle-has-own-property-correctly/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("hasOwnProperty", null, "testing"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-have-correct-comma-in-nested-children/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-have-correct-comma-in-nested-children/output.js index dbf0abc89047..aa4bcfb68912 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-have-correct-comma-in-nested-children/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-have-correct-comma-in-nested-children/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null, React.createElement("div", null, React.createElement("br", null)), React.createElement(Component, null, foo, React.createElement("br", null), bar), React.createElement("br", null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("br", null)), /*#__PURE__*/React.createElement(Component, null, foo, /*#__PURE__*/React.createElement("br", null), bar), /*#__PURE__*/React.createElement("br", null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-insert-commas-after-expressions-before-whitespace/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-insert-commas-after-expressions-before-whitespace/output.js index 6b74708096a6..b9aab6fda7a0 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-insert-commas-after-expressions-before-whitespace/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-insert-commas-after-expressions-before-whitespace/output.js @@ -1,5 +1,5 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", { +var x = /*#__PURE__*/React.createElement("div", { attr1: "foo" + "bar", attr2: "foo" + "bar" + "baz" + "bug", attr3: "foo" + "bar" + "baz" + "bug", diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-add-quotes-to-identifier-names/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-add-quotes-to-identifier-names/output.js index 316e48957b6c..b913a10251a9 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-add-quotes-to-identifier-names/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-add-quotes-to-identifier-names/output.js @@ -1,5 +1,5 @@ /** @jsxRuntime classic */ -var e = React.createElement(F, { +var e = /*#__PURE__*/React.createElement(F, { aaa: true, new: true, const: true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-mangle-expressioncontainer-attribute-values/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-mangle-expressioncontainer-attribute-values/output.js index f4b00c31146c..ac6e8018c90e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-mangle-expressioncontainer-attribute-values/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-mangle-expressioncontainer-attribute-values/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("button", { "data-value": "a value\n with\nnewlines\n and spaces" }, "Button"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js index 4d0d07b3472b..3985d6e82655 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("div", null, "\xA0 "); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-tags-with-a-single-child-of-nbsp/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-tags-with-a-single-child-of-nbsp/output.js index bddba3c73600..0be067277050 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-tags-with-a-single-child-of-nbsp/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-not-strip-tags-with-a-single-child-of-nbsp/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("div", null, "\xA0"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-properly-handle-comments-between-props/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-properly-handle-comments-between-props/output.js index 3b70990d4a13..82d04a2f1f07 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-properly-handle-comments-between-props/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-properly-handle-comments-between-props/output.js @@ -1,9 +1,9 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", { +var x = /*#__PURE__*/React.createElement("div", { /* a multi-line comment */ attr1: "foo" -}, React.createElement("span", { +}, /*#__PURE__*/React.createElement("span", { // a double-slash comment attr2: "bar" })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-quote-jsx-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-quote-jsx-attributes/output.js index 3c85b458caf8..f7cbf047eb31 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-quote-jsx-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-quote-jsx-attributes/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("button", { "data-value": "a value" }, "Button"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-transform-known-hyphenated-tags/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-transform-known-hyphenated-tags/output.js index fba27cd6176d..f225452a4dcd 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-transform-known-hyphenated-tags/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/should-transform-known-hyphenated-tags/output.js @@ -1,2 +1,4 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement("font-face", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/this-tag-name/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/this-tag-name/output.js index 6d648121ef98..19d03fb7828e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/this-tag-name/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/this-tag-name/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var div = React.createElement(this.foo, null, "test"); +var div = /*#__PURE__*/React.createElement(this.foo, null, "test"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-first-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-first-spread-attributes/output.js index 453b9b393ffb..27875bec6775 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-first-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-first-spread-attributes/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Component, { ...x, y: 2, z: true diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-last-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-last-spread-attributes/output.js index 456f978e69e4..3ce8e7d09f1d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-last-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-last-spread-attributes/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Component, { y: 2, z: true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-middle-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-middle-spread-attributes/output.js index db55c968cf03..8555a70b3131 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-middle-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/nextReactClassic/wraps-props-in-react-spread-for-middle-spread-attributes/output.js @@ -1,4 +1,6 @@ /** @jsxRuntime classic */ + +/*#__PURE__*/ React.createElement(Component, { y: 2, ...x, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/options.json new file mode 100644 index 000000000000..8608ef373955 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pure": false }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/output.js new file mode 100644 index 000000000000..3cd05d5f9f2f --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/output.js @@ -0,0 +1 @@ +React.createElement("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/input.js new file mode 100644 index 000000000000..6b8761b4a90a --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/input.js @@ -0,0 +1,3 @@ +/* @jsx h */ + +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/options.json new file mode 100644 index 000000000000..8608ef373955 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pure": false }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/output.js new file mode 100644 index 000000000000..6dc3b55a8a61 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/output.js @@ -0,0 +1,2 @@ +/* @jsx h */ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/options.json new file mode 100644 index 000000000000..65d9e8ae0d93 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pragma": "h", "pure": false }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/output.js new file mode 100644 index 000000000000..5b745cd1b863 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/output.js @@ -0,0 +1 @@ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/options.json new file mode 100644 index 000000000000..c9f1fc61d318 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pure": true }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/output.js new file mode 100644 index 000000000000..6ad0513bb203 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/output.js @@ -0,0 +1,2 @@ +/*#__PURE__*/ +React.createElement("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/input.js new file mode 100644 index 000000000000..6b8761b4a90a --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/input.js @@ -0,0 +1,3 @@ +/* @jsx h */ + +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/options.json new file mode 100644 index 000000000000..c9f1fc61d318 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pure": true }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/output.js new file mode 100644 index 000000000000..f9bf7e4e5fbc --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/output.js @@ -0,0 +1,4 @@ +/* @jsx h */ + +/*#__PURE__*/ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/options.json new file mode 100644 index 000000000000..8d4223a48bf5 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pragma": "h", "pure": true }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/output.js new file mode 100644 index 000000000000..64cd477b1617 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/output.js @@ -0,0 +1,2 @@ +/*#__PURE__*/ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/options.json new file mode 100644 index 000000000000..c6c850168596 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", {}] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/output.js new file mode 100644 index 000000000000..6ad0513bb203 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/output.js @@ -0,0 +1,2 @@ +/*#__PURE__*/ +React.createElement("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/input.js new file mode 100644 index 000000000000..6b8761b4a90a --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/input.js @@ -0,0 +1,3 @@ +/* @jsx h */ + +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/options.json new file mode 100644 index 000000000000..c6c850168596 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", {}] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/output.js new file mode 100644 index 000000000000..6dc3b55a8a61 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/output.js @@ -0,0 +1,2 @@ +/* @jsx h */ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/input.js new file mode 100644 index 000000000000..cbe1d12c589b --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/input.js @@ -0,0 +1 @@ +
; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/options.json new file mode 100644 index 000000000000..46f657580a52 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + ["transform-react-jsx", { "pragma": "h" }] + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/output.js new file mode 100644 index 000000000000..5b745cd1b863 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/output.js @@ -0,0 +1 @@ +h("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/output.js index de69246a1417..bfd6ae7c13f9 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Component, babelHelpers.extends({}, props, { sound: "moo" })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/arrow-functions/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/arrow-functions/output.js index dc9fe7116119..6ee7dcc94f2e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/arrow-functions/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/arrow-functions/output.js @@ -2,7 +2,7 @@ var foo = function () { var _this = this; return function () { - return React.createElement(_this, null); + return /*#__PURE__*/React.createElement(_this, null); }; }; @@ -10,6 +10,6 @@ var bar = function () { var _this2 = this; return function () { - return React.createElement(_this2.foo, null); + return /*#__PURE__*/React.createElement(_this2.foo, null); }; }; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/concatenates-adjacent-string-literals/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/concatenates-adjacent-string-literals/output.js index bbce53edfaaf..d3772171e065 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/concatenates-adjacent-string-literals/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/concatenates-adjacent-string-literals/output.js @@ -1 +1 @@ -var x = React.createElement("div", null, "foo", "bar", "baz", React.createElement("div", null, "buz bang"), "qux", null, "quack"); +var x = /*#__PURE__*/React.createElement("div", null, "foo", "bar", "baz", /*#__PURE__*/React.createElement("div", null, "buz bang"), "qux", null, "quack"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/dont-coerce-expression-containers/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/dont-coerce-expression-containers/output.js index a73dcc46c620..30d36264bde9 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/dont-coerce-expression-containers/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/dont-coerce-expression-containers/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement(Text, null, "To get started, edit index.ios.js!!!", "\n", "Press Cmd+R to reload"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-with-retainlines-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-with-retainlines-option/output.js index f3210cb915aa..7a1aee57ef3e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-with-retainlines-option/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-with-retainlines-option/output.js @@ -1 +1 @@ -var div = React.createElement("div", null, "test"); +var div = /*#__PURE__*/React.createElement("div", null, "test"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-without-retainlines-option/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-without-retainlines-option/output.js index f3210cb915aa..7a1aee57ef3e 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-without-retainlines-option/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/jsx-without-retainlines-option/output.js @@ -1 +1 @@ -var div = React.createElement("div", null, "test"); +var div = /*#__PURE__*/React.createElement("div", null, "test"); 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 fd4f9ceeb968..6629d8667358 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 @@ -2,7 +2,7 @@ function _createSuper(Derived) { return function () { var Super = babelHelpers.g function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } -var _ref = /*#__PURE__*/
+var _ref =
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js index 2306516ef51f..e67cc4ba42d5 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-add-quotes-es3/output.js @@ -1,4 +1,4 @@ -var es3 = React.createElement(F, { +var es3 = /*#__PURE__*/React.createElement(F, { aaa: true, "new": true, "const": true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-constructor-as-prop/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-constructor-as-prop/output.js index 5bda6d624fe2..68157cf0a134 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-constructor-as-prop/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-constructor-as-prop/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Component, { constructor: "foo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-deeper-js-namespacing/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-deeper-js-namespacing/output.js index 8dc54f904a4d..51e8fd555561 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-deeper-js-namespacing/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-deeper-js-namespacing/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement(Namespace.DeepNamespace.Component, null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-elements-as-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-elements-as-attributes/output.js index 27ead2eb0555..06428ad3807d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-elements-as-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-elements-as-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement("div", { - attr: React.createElement("div", null) + attr: /*#__PURE__*/React.createElement("div", null) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-js-namespacing/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-js-namespacing/output.js index 980df4572437..870cb0a6db33 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-js-namespacing/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-js-namespacing/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement(Namespace.Component, null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-nested-fragments/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-nested-fragments/output.js index e4f93efcc1d9..2ac191c03c5a 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-nested-fragments/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-allow-nested-fragments/output.js @@ -1 +1,2 @@ -React.createElement("div", null, React.createElement(React.Fragment, null, React.createElement(React.Fragment, null, React.createElement("span", null, "Hello"), React.createElement("span", null, "world")), React.createElement(React.Fragment, null, React.createElement("span", null, "Goodbye"), React.createElement("span", null, "world")))); +/*#__PURE__*/ +React.createElement("div", null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Hello"), /*#__PURE__*/React.createElement("span", null, "world")), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", null, "Goodbye"), /*#__PURE__*/React.createElement("span", null, "world")))); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js index 539bd017a676..98d7262c3a78 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-avoid-wrapping-in-extra-parens-if-not-needed/output.js @@ -1,4 +1,4 @@ -var x = React.createElement("div", null, React.createElement(Component, null)); -var x = React.createElement("div", null, props.children); -var x = React.createElement(Composite, null, props.children); -var x = React.createElement(Composite, null, React.createElement(Composite2, null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Component, null)); +var x = /*#__PURE__*/React.createElement("div", null, props.children); +var x = /*#__PURE__*/React.createElement(Composite, null, props.children); +var x = /*#__PURE__*/React.createElement(Composite, null, /*#__PURE__*/React.createElement(Composite2, null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-tags/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-tags/output.js index 73d0a3e9d56f..2973c9e9fd14 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-tags/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-tags/output.js @@ -1 +1 @@ -var x = React.createElement("div", null); +var x = /*#__PURE__*/React.createElement("div", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-text/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-text/output.js index 4a89144887a0..afcefb65f15d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-text/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-convert-simple-text/output.js @@ -1 +1 @@ -var x = React.createElement("div", null, "text"); +var x = /*#__PURE__*/React.createElement("div", null, "text"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxattribute/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxattribute/output.js index 48730b4133d0..60f6fd9294d9 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxattribute/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxattribute/output.js @@ -1,9 +1,14 @@ +/*#__PURE__*/ React.createElement("div", { id: "w\xF4w" }); + +/*#__PURE__*/ React.createElement("div", { id: "\\w" }); + +/*#__PURE__*/ React.createElement("div", { id: "w < w" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxtext/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxtext/output.js index 42ecff839522..64f33c72531a 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxtext/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-escape-xhtml-jsxtext/output.js @@ -1,9 +1,26 @@ +/*#__PURE__*/ React.createElement("div", null, "wow"); + +/*#__PURE__*/ React.createElement("div", null, "w\xF4w"); + +/*#__PURE__*/ React.createElement("div", null, "w & w"); + +/*#__PURE__*/ React.createElement("div", null, "w & w"); + +/*#__PURE__*/ React.createElement("div", null, "w \xA0 w"); + +/*#__PURE__*/ React.createElement("div", null, "this should not parse as unicode: \\u00a0"); + +/*#__PURE__*/ React.createElement("div", null, "this should parse as nbsp: \xA0 "); + +/*#__PURE__*/ React.createElement("div", null, "this should parse as unicode: ", '\u00a0 '); + +/*#__PURE__*/ React.createElement("div", null, "w < w"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-attributed-elements/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-attributed-elements/output.js index 7feb71c28005..04876829e9cc 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-attributed-elements/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-attributed-elements/output.js @@ -1,9 +1,9 @@ var HelloMessage = React.createClass({ displayName: "HelloMessage", render: function () { - return React.createElement("div", null, "Hello ", this.props.name); + return /*#__PURE__*/React.createElement("div", null, "Hello ", this.props.name); } }); -React.render(React.createElement(HelloMessage, { - name: React.createElement("span", null, "Sebastian") +React.render( /*#__PURE__*/React.createElement(HelloMessage, { + name: /*#__PURE__*/React.createElement("span", null, "Sebastian") }), mountNode); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-has-own-property-correctly/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-has-own-property-correctly/output.js index 55c8cea17044..5a06e153c496 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-has-own-property-correctly/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-handle-has-own-property-correctly/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("hasOwnProperty", null, "testing"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-have-correct-comma-in-nested-children/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-have-correct-comma-in-nested-children/output.js index f8a085117349..d8667f762c7d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-have-correct-comma-in-nested-children/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-have-correct-comma-in-nested-children/output.js @@ -1 +1 @@ -var x = React.createElement("div", null, React.createElement("div", null, React.createElement("br", null)), React.createElement(Component, null, foo, React.createElement("br", null), bar), React.createElement("br", null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("br", null)), /*#__PURE__*/React.createElement(Component, null, foo, /*#__PURE__*/React.createElement("br", null), bar), /*#__PURE__*/React.createElement("br", null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-insert-commas-after-expressions-before-whitespace/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-insert-commas-after-expressions-before-whitespace/output.js index f7a07f8b6c30..9ae706684fd7 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-insert-commas-after-expressions-before-whitespace/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-insert-commas-after-expressions-before-whitespace/output.js @@ -1,4 +1,4 @@ -var x = React.createElement("div", { +var x = /*#__PURE__*/React.createElement("div", { attr1: "foo" + "bar", attr2: "foo" + "bar" + "baz" + "bug", attr3: "foo" + "bar" + "baz" + "bug", diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js index b60eb0ba8ea9..1be1c61decda 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-add-quotes-to-identifier-names/output.js @@ -1,4 +1,4 @@ -var e = React.createElement(F, { +var e = /*#__PURE__*/React.createElement(F, { aaa: true, new: true, const: true, diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-mangle-expressioncontainer-attribute-values/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-mangle-expressioncontainer-attribute-values/output.js index e7dc9637a1b4..2e104ae0ae17 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-mangle-expressioncontainer-attribute-values/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-mangle-expressioncontainer-attribute-values/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement("button", { "data-value": "a value\n with\nnewlines\n and spaces" }, "Button"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js index 5f5e3192706e..a8114f7ca5d4 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-nbsp-even-coupled-with-other-whitespace/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("div", null, "\xA0 "); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-tags-with-a-single-child-of-nbsp/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-tags-with-a-single-child-of-nbsp/output.js index d9d43fd992a8..b01dbe6b0816 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-tags-with-a-single-child-of-nbsp/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-not-strip-tags-with-a-single-child-of-nbsp/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("div", null, "\xA0"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-properly-handle-comments-between-props/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-properly-handle-comments-between-props/output.js index 52a8177e5f1f..fbe9b6dd6844 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-properly-handle-comments-between-props/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-properly-handle-comments-between-props/output.js @@ -1,8 +1,8 @@ -var x = React.createElement("div", { +var x = /*#__PURE__*/React.createElement("div", { /* a multi-line comment */ attr1: "foo" -}, React.createElement("span", { +}, /*#__PURE__*/React.createElement("span", { // a double-slash comment attr2: "bar" })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-quote-jsx-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-quote-jsx-attributes/output.js index 0eb02e4d39be..c8ab96101ebc 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-quote-jsx-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-quote-jsx-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement("button", { "data-value": "a value" }, "Button"); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-transform-known-hyphenated-tags/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-transform-known-hyphenated-tags/output.js index 140f5b1b8c41..24118629b8eb 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-transform-known-hyphenated-tags/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-transform-known-hyphenated-tags/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("font-face", null); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/output.js index 9db2ccf7cc5c..b6fe512bfda8 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Component, babelHelpers.extends({}, x, { y: 2, z: true diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/output.js index 926dceda6c0f..c1c22b02c9da 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Component, babelHelpers.extends({ y: 2, z: true diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/output.js index c3e1be2707d3..7d99b1a29c3d 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Component, babelHelpers.extends({ y: 2 }, x, { diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/classic/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/classic/output.js index 0e2ff2c53ccd..ebd8fce02e70 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/classic/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/classic/output.js @@ -1 +1 @@ -var x = React.createElement("div", null, React.createElement("span", null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/defaults-to-classic/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/defaults-to-classic/output.js index 0e2ff2c53ccd..ebd8fce02e70 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/defaults-to-classic/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/defaults-to-classic/output.js @@ -1 +1 @@ -var x = React.createElement("div", null, React.createElement("span", null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/pragma-runtime-classsic/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/pragma-runtime-classsic/output.js index 6858ec824019..8785f4a11be5 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/pragma-runtime-classsic/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/pragma-runtime-classsic/output.js @@ -1,2 +1,2 @@ /** @jsxRuntime classic */ -var x = React.createElement("div", null, React.createElement("span", null)); +var x = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", null)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/runtime-automatic/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/runtime-automatic/output.js index 969d29e3a9bb..607dafdc732b 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/runtime-automatic/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/runtime/runtime-automatic/output.js @@ -1,5 +1,5 @@ var _reactJsxRuntime = require("react/jsx-runtime"); -var x = _reactJsxRuntime.jsx("div", { - children: _reactJsxRuntime.jsx("span", {}) +var x = /*#__PURE__*/_reactJsxRuntime.jsx("div", { + children: /*#__PURE__*/_reactJsxRuntime.jsx("span", {}) }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/useBuiltIns/assignment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/useBuiltIns/assignment/output.js index 0641f0b294c1..a4005fba7aeb 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/useBuiltIns/assignment/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/useBuiltIns/assignment/output.js @@ -1,3 +1,3 @@ -var div = React.createElement(Component, Object.assign({}, props, { +var div = /*#__PURE__*/React.createElement(Component, Object.assign({}, props, { foo: "bar" })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/useSpread/assignment/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/useSpread/assignment/output.js index 6d3c49132173..0c5b1f75b073 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/useSpread/assignment/output.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/useSpread/assignment/output.js @@ -1,3 +1,3 @@ -var div = React.createElement(Component, { ...props, +var div = /*#__PURE__*/React.createElement(Component, { ...props, foo: "bar" }); diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/computed-properties/example/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/computed-properties/example/output.js index 3abdd186ace6..761ca3a29919 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/computed-properties/example/output.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/computed-properties/example/output.js @@ -1,18 +1,17 @@ var o = { foo() { - return (/*#__PURE__*/regeneratorRuntime.mark(function _callee() { - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) switch (_context.prev = _context.next) { - case 0: - return _context.abrupt("return", "foo"); + return /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", "foo"); - case 1: - case "end": - return _context.stop(); - } - }, _callee); - })() - ); + case 1: + case "end": + return _context.stop(); + } + }, _callee); + })(); } }; diff --git a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/4219/output.js b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/4219/output.js index bef5016506e1..67483b243904 100644 --- a/packages/babel-plugin-transform-regenerator/test/fixtures/regression/4219/output.js +++ b/packages/babel-plugin-transform-regenerator/test/fixtures/regression/4219/output.js @@ -3,20 +3,19 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function test(fn) { - return (/*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { - var _args = arguments; - return regeneratorRuntime.wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - return _context.abrupt("return", fn.apply(void 0, _args)); + return /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { + var _args = arguments; + return regeneratorRuntime.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + return _context.abrupt("return", fn.apply(void 0, _args)); - case 1: - case "end": - return _context.stop(); - } + case 1: + case "end": + return _context.stop(); } - }, _callee); - })) - ); + } + }, _callee); + })); } diff --git a/packages/babel-preset-react/src/index.js b/packages/babel-preset-react/src/index.js index 58c7f9028bcd..7d933c035129 100644 --- a/packages/babel-preset-react/src/index.js +++ b/packages/babel-preset-react/src/index.js @@ -8,15 +8,19 @@ import transformReactJSXSelf from "@babel/plugin-transform-react-jsx-self"; export default declare((api, opts) => { api.assertVersion(7); - const pragma = opts.pragma; - const pragmaFrag = opts.pragmaFrag; - const throwIfNamespace = - opts.throwIfNamespace === undefined ? true : !!opts.throwIfNamespace; + const { + pragma, + pragmaFrag, + pure, + throwIfNamespace = true, + useSpread, + runtime = "classic", + importSource, + } = opts; + + // TODO: (Babel 8) Don't cast these options but validate it const development = !!opts.development; const useBuiltIns = !!opts.useBuiltIns; - const { useSpread } = opts; - const runtime = opts.runtime || "classic"; - const importSource = opts.importSource; if (typeof development !== "boolean") { throw new Error( @@ -41,6 +45,7 @@ export default declare((api, opts) => { throwIfNamespace, useBuiltIns, useSpread, + pure, }, ], transformReactDisplayName, diff --git a/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic-windows/output.js b/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic-windows/output.js index 7a4bd1d2e906..57fb253af7a3 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic-windows/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic-windows/output.js @@ -2,6 +2,7 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-preset-react\\test\\fixtures\\preset-options\\development-runtime-automatic-windows\\input.js"; +/*#__PURE__*/ _reactJsxDevRuntime.jsxDEV(Foo, { bar: "baz" }, void 0, false, { diff --git a/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic/output.js b/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic/output.js index 4f7997f3b024..40c4ec890b5b 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic/output.js @@ -2,6 +2,7 @@ var _reactJsxDevRuntime = require("react/jsx-dev-runtime"); var _jsxFileName = "/packages/babel-preset-react/test/fixtures/preset-options/development-runtime-automatic/input.js"; +/*#__PURE__*/ _reactJsxDevRuntime.jsxDEV(Foo, { bar: "baz" }, void 0, false, { diff --git a/packages/babel-preset-react/test/fixtures/preset-options/development-windows/exec.js b/packages/babel-preset-react/test/fixtures/preset-options/development-windows/exec.js index bdbfc12d5f69..1bb3c16bbf00 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/development-windows/exec.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/development-windows/exec.js @@ -5,6 +5,8 @@ const actual = transform( const expected = multiline([ 'var _jsxFileName = "C:\\\\fake\\\\path\\\\mock.js";', + '', + '/*#__PURE__*/', 'React.createElement(Foo, {', ' bar: "baz",', ' __source: {', diff --git a/packages/babel-preset-react/test/fixtures/preset-options/development/exec.js b/packages/babel-preset-react/test/fixtures/preset-options/development/exec.js index 9dbbc3deb525..846c554ca8f6 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/development/exec.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/development/exec.js @@ -5,6 +5,8 @@ const actual = transform( const expected = multiline([ 'var _jsxFileName = "/fake/path/mock.js";', + '', + '/*#__PURE__*/', 'React.createElement(Foo, {', ' bar: "baz",', ' __source: {', diff --git a/packages/babel-preset-react/test/fixtures/preset-options/empty-options/output.js b/packages/babel-preset-react/test/fixtures/preset-options/empty-options/output.js index 835263a79b1f..6bb6d5f16940 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/empty-options/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/empty-options/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Foo, { bar: "baz" }); diff --git a/packages/babel-preset-react/test/fixtures/preset-options/no-options/output.js b/packages/babel-preset-react/test/fixtures/preset-options/no-options/output.js index 835263a79b1f..6bb6d5f16940 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/no-options/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/no-options/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Foo, { bar: "baz" }); diff --git a/packages/babel-preset-react/test/fixtures/preset-options/runtime-automatic/output.js b/packages/babel-preset-react/test/fixtures/preset-options/runtime-automatic/output.js index cad915782e2b..1b9e086df135 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/runtime-automatic/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/runtime-automatic/output.js @@ -1,5 +1,6 @@ var _reactJsxRuntime = require("react/jsx-runtime"); +/*#__PURE__*/ _reactJsxRuntime.jsx(Foo, { bar: "baz" }); diff --git a/packages/babel-preset-react/test/fixtures/preset-options/runtime-classic/output.js b/packages/babel-preset-react/test/fixtures/preset-options/runtime-classic/output.js index 835263a79b1f..6bb6d5f16940 100644 --- a/packages/babel-preset-react/test/fixtures/preset-options/runtime-classic/output.js +++ b/packages/babel-preset-react/test/fixtures/preset-options/runtime-classic/output.js @@ -1,3 +1,4 @@ +/*#__PURE__*/ React.createElement(Foo, { bar: "baz" }); diff --git a/packages/babel-preset-typescript/test/fixtures/jsx-compat/js-valid/output.js b/packages/babel-preset-typescript/test/fixtures/jsx-compat/js-valid/output.js index 3cd05d5f9f2f..6ad0513bb203 100644 --- a/packages/babel-preset-typescript/test/fixtures/jsx-compat/js-valid/output.js +++ b/packages/babel-preset-typescript/test/fixtures/jsx-compat/js-valid/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("div", null); diff --git a/packages/babel-preset-typescript/test/fixtures/jsx-compat/tsx-valid/output.js b/packages/babel-preset-typescript/test/fixtures/jsx-compat/tsx-valid/output.js index 3cd05d5f9f2f..6ad0513bb203 100644 --- a/packages/babel-preset-typescript/test/fixtures/jsx-compat/tsx-valid/output.js +++ b/packages/babel-preset-typescript/test/fixtures/jsx-compat/tsx-valid/output.js @@ -1 +1,2 @@ +/*#__PURE__*/ React.createElement("div", null); diff --git a/packages/babel-standalone/test/babel.js b/packages/babel-standalone/test/babel.js index 8fd2b8a60d56..20dbe7606d39 100644 --- a/packages/babel-standalone/test/babel.js +++ b/packages/babel-standalone/test/babel.js @@ -68,7 +68,7 @@ }, ).code; expect(output).toBe( - 'const someDiv = React.createElement("div", null, getMessage());', + 'const someDiv = /*#__PURE__*/React.createElement("div", null, getMessage());', ); });