From f3912ac08f4f2b0022d3ba5a0edba5e7ff6c1ff0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 19 Mar 2020 15:43:54 +0100 Subject: [PATCH] Mark transpiled JSX elements as pure (#11126) * Mark transpiled JSX elements as pure * Avoid duble annotation * Add "pure" option to the React preset * Fix generator indentation * Update tests * Add tests for the "pure" option * Update windows fixtures --- packages/babel-generator/src/printer.js | 2 + .../package.json | 1 + .../src/index.js | 64 +++++++++++++++---- .../package.json | 1 + .../src/index.js | 15 ++++- .../fixtures/general/jsx-identifier/output.js | 2 +- .../test/fixtures/regression/2775/output.js | 4 +- .../test/fixtures/regression/T6750/output.js | 21 +++--- .../export-default-arrow-renaming-3/output.js | 2 +- .../package.json | 1 - .../src/index.js | 9 +-- .../output.mjs | 4 +- .../output.js | 6 +- .../output.js | 6 +- .../output.mjs | 4 +- .../constant-elements/children/output.js | 2 +- .../output.mjs | 2 +- .../compound-assignment/output.mjs | 4 +- .../constant-elements/constructor/output.js | 2 +- .../deep-constant-violation/output.js | 4 +- .../dont-hoist-before-class/output.mjs | 4 +- .../dont-hoist-before-declaration/output.js | 4 +- .../output.js | 2 +- .../output.js | 2 +- .../dont-hoist-before-hoc/output.mjs | 4 +- .../function-parameter/output.js | 4 +- .../global-reference/output.js | 2 +- .../constant-elements/html-element/output.js | 4 +- .../inner-declaration/output.js | 2 +- .../member-expression-constant/output.js | 2 +- .../member-expression-this/output.js | 4 +- .../member-expression/output.js | 4 +- .../constant-elements/param-and-var/output.js | 2 +- .../parameter-destructure-multi/output.js | 2 +- .../parameter-destructure-rest/output.js | 2 +- .../parameter-destructure/output.js | 2 +- .../parameter-reference/output.js | 2 +- .../pure-expression-2/output.js | 2 +- .../pure-expression-3/output.js | 2 +- .../output.mjs | 2 +- .../pure-expression-whitelist/output.js | 2 +- .../pure-expression/output.js | 2 +- .../constant-elements/reassignment/output.js | 2 +- .../constant-elements/text-children/output.js | 2 +- .../fixtures/constant-elements/var/output.js | 2 +- .../src/index.js | 2 + .../inline-elements/children-exists/output.js | 1 + .../component-with-props/output.js | 1 + .../inline-elements/component/output.js | 1 + .../expression-container/output.js | 2 +- .../inline-elements/fragment/output.js | 3 +- .../html-element-with-props/output.js | 1 + .../inline-elements/html-element/output.js | 1 + .../inline-elements/key-computed/output.js | 1 + .../fixtures/inline-elements/key/output.js | 1 + .../lowercase-member-expression/output.js | 2 +- .../member-expression/output.js | 2 +- .../inline-elements/multiline/output.js | 1 + .../nested-components/output.js | 3 +- .../nested-html-elements/output.js | 1 + .../fixtures/inline-elements/nested/output.js | 3 +- .../inline-elements/ref-deopt/output.js | 1 + .../output.js | 1 + .../self-closing-component/output.js | 1 + .../output.js | 1 + .../self-closing-html-element/output.js | 1 + .../shorthand-attributes/output.js | 1 + .../inline-elements/spread-deopt/output.js | 1 + .../test/fixtures/regressions/6276/output.js | 2 +- .../src/index.js | 9 +++ .../fixtures/linux/auto-import-dev/output.mjs | 12 ++-- .../fixtures/linux/classic-runtime/output.js | 10 +-- .../test/fixtures/linux/fragments/output.js | 4 +- .../linux/handle-fragments-with-key/output.js | 2 +- .../linux/handle-nonstatic-children/output.js | 6 +- .../linux/handle-static-children/output.js | 8 +-- .../auto-import-dev-windows/output.mjs | 12 ++-- .../windows/classic-runtime-windows/output.js | 10 +-- .../windows/fragments-windows/output.js | 4 +- .../output.js | 2 +- .../output.js | 6 +- .../handle-static-children-windows/output.js | 8 +-- .../src/transform-automatic.js | 9 +++ .../src/transform-classic.js | 19 +++--- .../output.mjs | 8 +-- .../output.js | 8 +-- .../complicated-scope-module/output.mjs | 4 +- .../complicated-scope-script/output.js | 4 +- .../nextAutoImport/react-defined/output.mjs | 6 +- .../output.mjs | 1 + .../nextReact/arrow-functions/output.mjs | 4 +- .../fixtures/nextReact/assignment/output.mjs | 2 +- .../output.mjs | 4 +- .../output.mjs | 1 + .../handle-fragments-with-key/output.mjs | 2 +- .../output.mjs | 2 +- .../nextReact/handle-fragments/output.mjs | 4 +- .../handle-nonstatic-children/output.mjs | 6 +- .../handle-static-children/output.mjs | 6 +- .../honor-custom-jsx-comment/output.mjs | 9 +-- .../jsx-with-retainlines-option/output.mjs | 2 +- .../jsx-without-retainlines-option/output.mjs | 4 +- .../nextReact/key-undefined-works/output.mjs | 2 +- .../output.mjs | 2 +- .../should-add-quotes-es3/output.mjs | 2 +- .../output.mjs | 1 + .../output.mjs | 3 +- .../output.mjs | 3 +- .../should-allow-js-namespacing/output.mjs | 3 +- .../should-allow-nested-fragments/output.mjs | 15 +++-- .../output.mjs | 12 ++-- .../should-convert-simple-tags/output.mjs | 2 +- .../should-convert-simple-text/output.mjs | 2 +- .../output.mjs | 3 + .../should-escape-xhtml-jsxtext/output.mjs | 9 +++ .../output.mjs | 6 +- .../output.mjs | 1 + .../output.mjs | 12 ++-- .../output.mjs | 2 +- .../output.mjs | 2 +- .../output.mjs | 1 + .../output.mjs | 1 + .../output.mjs | 1 + .../output.mjs | 4 +- .../should-properly-handle-keys/output.mjs | 8 +-- .../output.mjs | 2 +- .../should-quote-jsx-attributes/output.mjs | 1 + .../output.mjs | 1 + .../output.mjs | 3 +- .../output.mjs | 2 +- .../output.mjs | 2 +- .../nextReact/this-tag-name/output.mjs | 2 +- .../output.mjs | 1 + .../output.mjs | 1 + .../output.js | 2 + .../arrow-functions/output.js | 4 +- .../nextReactClassic/assignment/output.js | 2 +- .../output.js | 2 +- .../output.js | 2 + .../jsx-with-retainlines-option/output.js | 2 +- .../jsx-without-retainlines-option/output.js | 2 +- .../should-add-quotes-es3/output.js | 2 +- .../output.js | 2 + .../output.js | 2 + .../output.js | 4 +- .../should-allow-js-namespacing/output.js | 2 + .../should-allow-nested-fragments/output.js | 4 +- .../output.js | 8 +-- .../should-convert-simple-tags/output.js | 2 +- .../should-convert-simple-text/output.js | 2 +- .../output.js | 6 ++ .../should-escape-xhtml-jsxtext/output.js | 18 ++++++ .../output.js | 6 +- .../output.js | 2 + .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 + .../output.js | 2 + .../output.js | 2 + .../output.js | 4 +- .../should-quote-jsx-attributes/output.js | 2 + .../output.js | 2 + .../nextReactClassic/this-tag-name/output.js | 2 +- .../output.js | 2 + .../output.js | 2 + .../output.js | 2 + .../pure/false-default-pragma/input.js | 1 + .../pure/false-default-pragma/options.json | 5 ++ .../pure/false-default-pragma/output.js | 1 + .../pure/false-pragma-comment/input.js | 3 + .../pure/false-pragma-comment/options.json | 5 ++ .../pure/false-pragma-comment/output.js | 2 + .../pure/false-pragma-option/input.js | 1 + .../pure/false-pragma-option/options.json | 5 ++ .../pure/false-pragma-option/output.js | 1 + .../pure/true-default-pragma/input.js | 1 + .../pure/true-default-pragma/options.json | 5 ++ .../pure/true-default-pragma/output.js | 2 + .../pure/true-pragma-comment/input.js | 3 + .../pure/true-pragma-comment/options.json | 5 ++ .../pure/true-pragma-comment/output.js | 4 ++ .../fixtures/pure/true-pragma-option/input.js | 1 + .../pure/true-pragma-option/options.json | 5 ++ .../pure/true-pragma-option/output.js | 2 + .../pure/unset-default-pragma/input.js | 1 + .../pure/unset-default-pragma/options.json | 5 ++ .../pure/unset-default-pragma/output.js | 2 + .../pure/unset-pragma-comment/input.js | 3 + .../pure/unset-pragma-comment/options.json | 5 ++ .../pure/unset-pragma-comment/output.js | 2 + .../pure/unset-pragma-option/input.js | 1 + .../pure/unset-pragma-option/options.json | 5 ++ .../pure/unset-pragma-option/output.js | 1 + .../output.js | 1 + .../fixtures/react/arrow-functions/output.js | 4 +- .../output.js | 2 +- .../output.js | 1 + .../jsx-with-retainlines-option/output.js | 2 +- .../jsx-without-retainlines-option/output.js | 2 +- .../output.js | 2 +- .../react/should-add-quotes-es3/output.js | 2 +- .../output.js | 1 + .../output.js | 1 + .../output.js | 3 +- .../should-allow-js-namespacing/output.js | 1 + .../should-allow-nested-fragments/output.js | 3 +- .../output.js | 8 +-- .../should-convert-simple-tags/output.js | 2 +- .../should-convert-simple-text/output.js | 2 +- .../output.js | 5 ++ .../should-escape-xhtml-jsxtext/output.js | 17 +++++ .../output.js | 6 +- .../output.js | 1 + .../output.js | 2 +- .../output.js | 2 +- .../output.js | 2 +- .../output.js | 1 + .../output.js | 1 + .../output.js | 1 + .../output.js | 4 +- .../should-quote-jsx-attributes/output.js | 1 + .../output.js | 1 + .../output.js | 1 + .../output.js | 1 + .../output.js | 1 + .../test/fixtures/runtime/classic/output.js | 2 +- .../runtime/defaults-to-classic/output.js | 2 +- .../runtime/pragma-runtime-classsic/output.js | 2 +- .../runtime/runtime-automatic/output.js | 4 +- .../fixtures/useBuiltIns/assignment/output.js | 2 +- .../fixtures/useSpread/assignment/output.js | 2 +- .../computed-properties/example/output.js | 23 ++++--- .../test/fixtures/regression/4219/output.js | 27 ++++---- packages/babel-preset-react/src/index.js | 19 ++++-- .../output.js | 1 + .../development-runtime-automatic/output.js | 1 + .../development-windows/exec.js | 2 + .../preset-options/development/exec.js | 2 + .../preset-options/empty-options/output.js | 1 + .../preset-options/no-options/output.js | 1 + .../runtime-automatic/output.js | 1 + .../preset-options/runtime-classic/output.js | 1 + .../fixtures/jsx-compat/js-valid/output.js | 1 + .../fixtures/jsx-compat/tsx-valid/output.js | 1 + packages/babel-standalone/test/babel.js | 2 +- 246 files changed, 613 insertions(+), 314 deletions(-) create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-default-pragma/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-comment/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/false-pragma-option/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-default-pragma/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-comment/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/true-pragma-option/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-default-pragma/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-comment/output.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/input.js create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/options.json create mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/pure/unset-pragma-option/output.js diff --git a/packages/babel-generator/src/printer.js b/packages/babel-generator/src/printer.js index e449330f7b..bb6aeb9967 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 5142bc965a..711aa0b466 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 45532536b9..2117da3199 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 25007d3fce..70ab8be555 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 b0050c6375..5d00f6435d 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 5e8476c8d2..c3c6e9d68c 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 36329369f0..1be8c8d853 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 c783daf45d..c9d7b95637 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 d408ec5652..4bfd9a85b3 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 73c5149a24..330c8eea88 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 48d5e2bbc7..4d434bdc3a 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 ad174780f1..5f4d4762cf 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 ff39e64e15..5b5fdfbf77 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 2e2c88d9e8..7088d18dca 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 348c96869e..e7f8ea322a 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 213c2c0300..9f725b28e8 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 749027ab9b..cb11c5579d 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 e27ecd7862..ed30e48545 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 d5f01771fb..e3e86ae68d 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 33ca49795e..325f0daf7c 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 7669f47c9f..060811816d 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 8e6ec600de..878e19404b 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 f9637828ba..86a47eb10a 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 246eb04e71..6780bc3d89 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 bfce79dae2..d1521a3baf 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 375f36caf5..0e737624da 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 3e03e5950a..2bfa9cf8e6 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 7eb3a4de9b..7ec3220a51 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 c6e76f5c5c..b0e2cde1ad 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 9523683a75..aa7a9994ba 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 9e1991d502..b9e52e3a52 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 1b9ca40148..96fc93c58d 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 dd2a7c88a4..599a2b9297 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 5c4d51c1a1..c039c14143 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 7ac09e4fe0..a00f73f6f4 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 8ab40112f4..272a607c98 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 b4e518a1bc..bec3e34993 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 ebc1856539..71dfc286ce 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 6a23987eb2..79c8b1db99 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 4f6b4b4d65..1452baefa3 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 aee6d12478..9df27d0157 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 5b6e175e38..957dc4a8a2 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 c483d271d5..9eb9d792f1 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 aaa8f1769d..43898f7413 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 3fe5e70265..a0bf6d783b 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 ab81b6b51a..925d46032c 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 3aacdd9605..a09478386d 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 a512d982d3..fdfed4e488 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 0e606e15ed..54489a5a9b 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 0b5a3dbe8d..2052b4b8a5 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 55fbad164b..ef11b9ecda 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 abff32a5b5..c1d0af001c 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 39a91f19d8..e7dd64e8ab 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 64a65e8256..27854ce106 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 6b049a75bd..03cff11c9b 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 27a9501e65..963b0be35b 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 fa4e99bf5e..51e8f24077 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 0e606e15ed..54489a5a9b 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 3a860d5005..b6fa7c0282 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 0b662168ca..c16ba861e5 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 ca0b66721a..98bcf8d65f 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 f0768d2715..bd841c1893 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 a512d982d3..fdfed4e488 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 0e606e15ed..54489a5a9b 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 abff32a5b5..c1d0af001c 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 39a91f19d8..e7dd64e8ab 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 ffd4e433d9..90137d5ddf 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 5672885bad..5f16ff6ba3 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 0eb30c15e3..229a5d2ee9 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 b0c0d4d0f4..4fb52ad629 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 8b0fc87276..dcdeec4586 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 dc7259198b..ae50081c20 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 efb7281b22..9f7c06bf2e 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 34beb8ddb5..cce20f0ed3 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 96d880cf0d..b0fca3139a 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 69422fd6aa..b0886b4fb8 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 de311163a3..d9eda42cc0 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 2db556c3be..793689c1cc 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 9c56371d6f..5810f0270c 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 33f7bb2e73..577650e5f4 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 c05d80a46e..71a0eb0c2b 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 85b5e50040..af06d57aee 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 71f41a5de7..543b9ef071 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 e76d29b034..eee2ab2533 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 386cac2a47..00a9fb9333 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 9c3f75a6d6..61a0eebb30 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 bec94b2a34..bd4dc3f850 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 cb5ea61c1a..8784a68120 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 f4eec3ebc1..18af1b0b5e 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 a13dad887a..2c3a2180d2 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 28e5fdfc6a..e5a605c67c 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 4b779c6c76..05860f319a 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 9d0b0f28a2..303129243f 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 e3d32ba4f9..c4264e2580 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 2de900d3a3..93d0763c4e 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 0244f87df1..a749832fa1 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 19103d494e..b34f1fa72c 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 26f074358c..1b19cdfcbd 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 7d6867ace0..b1451ada19 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 dd50d9528b..dbfa968106 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 028212c148..81cfa80894 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 439bf254fd..e74b251a64 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 793e880d0b..3c78adf144 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 0b217c67e6..188cfa91ed 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 cc534377ff..a57a04a495 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 6335551d5c..1a28ef6db3 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 a3932e252e..9aa4c36567 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 f78723563c..9d18ed3e73 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 068c945bc5..c0b46c8974 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 d549233634..89cc0c22a8 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 4e5907bd05..99f063b7fd 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 b35b58bc54..dac95436f8 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 59f4813364..7791e67597 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 2d3ad6e2ac..9a5aedeff4 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 21926fc11b..32cb47cd42 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 c8bd7d9ca4..27287d025d 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 13b9b81dd5..7c7ac7d56b 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 98492e28e5..ffb137dfab 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 c054ae2ac6..a7dc56ee31 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 92604cf540..210066ec1f 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 f00d3908f2..198de8a241 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 7c75d440f3..86f0e9eaec 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 4cd811612d..6a0ea18e16 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 0a9d389b76..7b0923e096 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 6d3806f422..3b72b3dc76 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 b50ab710c5..075d0ab77a 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 65841ee76a..6644401db9 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 6b1a400adb..a1da85af07 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 bfb38b62b4..2ea1f6082a 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 5fe42670bb..312d7cfc2a 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 7e4836adba..5e449874dd 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 b27f50e65b..eb3f1f63a1 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 bad39dd847..cc9c33d709 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 11c49ec080..c63d50f6fc 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 921266525f..fae9bf83c1 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 2319716dfc..9efe9c1f81 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 2d33efe028..ca1e5ccf7a 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 18a64b8eaa..8a2a3cc5e6 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 4c34d75664..2f94775271 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 f356827adf..2400c365d3 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 2833a1567b..43741ba3ba 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 cf80f498ee..f6df48def1 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 1156e9ad21..0254eb89ac 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 f65f2feac3..35f6248819 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 857f385cb5..58f1a3e44b 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 fff105f6d0..8155fe4bee 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 60487d4536..57aa42727b 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 09e7376748..c930341f46 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 381438c5ff..a52c7633a1 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 de532be0e8..93df9c804e 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 62d7d5b7b3..b0727d295e 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 f454df922d..c4288df1dd 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 1243c0396c..b23971257a 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 6712b7d9ed..821ec2ada9 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 dbf0abc890..aa4bcfb689 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 6b74708096..b9aab6fda7 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 316e48957b..b913a10251 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 f4b00c3114..ac6e8018c9 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 4d0d07b347..3985d6e826 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 bddba3c736..0be0672770 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 3b70990d4a..82d04a2f1f 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 3c85b458ca..f7cbf047eb 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 fba27cd617..f225452a4d 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 6d648121ef..19d03fb782 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 453b9b393f..27875bec67 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 456f978e69..3ce8e7d09f 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 db55c968cf..8555a70b31 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 0000000000..cbe1d12c58 --- /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 0000000000..8608ef3739 --- /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 0000000000..3cd05d5f9f --- /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 0000000000..6b8761b4a9 --- /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 0000000000..8608ef3739 --- /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 0000000000..6dc3b55a8a --- /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 0000000000..cbe1d12c58 --- /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 0000000000..65d9e8ae0d --- /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 0000000000..5b745cd1b8 --- /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 0000000000..cbe1d12c58 --- /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 0000000000..c9f1fc61d3 --- /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 0000000000..6ad0513bb2 --- /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 0000000000..6b8761b4a9 --- /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 0000000000..c9f1fc61d3 --- /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 0000000000..f9bf7e4e5f --- /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 0000000000..cbe1d12c58 --- /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 0000000000..8d4223a48b --- /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 0000000000..64cd477b16 --- /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 0000000000..cbe1d12c58 --- /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 0000000000..c6c8501685 --- /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 0000000000..6ad0513bb2 --- /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 0000000000..6b8761b4a9 --- /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 0000000000..c6c8501685 --- /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 0000000000..6dc3b55a8a --- /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 0000000000..cbe1d12c58 --- /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 0000000000..46f657580a --- /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 0000000000..5b745cd1b8 --- /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 de69246a14..bfd6ae7c13 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 dc9fe71161..6ee7dcc94f 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 bbce53edfa..d3772171e0 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 a73dcc46c6..30d36264bd 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 f3210cb915..7a1aee57ef 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 f3210cb915..7a1aee57ef 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 fd4f9ceeb9..6629d86673 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 2306516ef5..e67cc4ba42 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 5bda6d624f..68157cf0a1 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 8dc54f904a..51e8fd5555 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 27ead2eb05..06428ad380 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 980df45724..870cb0a6db 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 e4f93efcc1..2ac191c03c 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 539bd017a6..98d7262c3a 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 73d0a3e9d5..2973c9e9fd 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 4a89144887..afcefb65f1 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 48730b4133..60f6fd9294 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 42ecff8395..64f33c7253 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 7feb71c280..04876829e9 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 55c8cea170..5a06e153c4 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 f8a0851173..d8667f762c 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 f7a07f8b6c..9ae706684f 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 b60eb0ba8e..1be1c61dec 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 e7dc9637a1..2e104ae0ae 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 5f5e319270..a8114f7ca5 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 d9d43fd992..b01dbe6b08 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 52a8177e5f..fbe9b6dd68 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 0eb02e4d39..c8ab96101e 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 140f5b1b8c..24118629b8 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 9db2ccf7cc..b6fe512bfd 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 926dceda6c..c1c22b02c9 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 c3e1be2707..7d99b1a29c 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 0e2ff2c53c..ebd8fce02e 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 0e2ff2c53c..ebd8fce02e 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 6858ec8240..8785f4a11b 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 969d29e3a9..607dafdc73 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 0641f0b294..a4005fba7a 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 6d3c491321..0c5b1f75b0 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 3abdd186ac..761ca3a299 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 bef5016506..67483b2439 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 58c7f9028b..7d933c0351 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 7a4bd1d2e9..57fb253af7 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 4f7997f3b0..40c4ec890b 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 bdbfc12d5f..1bb3c16bbf 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 9dbbc3deb5..846c554ca8 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 835263a79b..6bb6d5f169 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 835263a79b..6bb6d5f169 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 cad915782e..1b9e086df1 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 835263a79b..6bb6d5f169 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 3cd05d5f9f..6ad0513bb2 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 3cd05d5f9f..6ad0513bb2 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 8fd2b8a60d..20dbe7606d 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());', ); });