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 eee2ab2533..5ae9411a2c 100644 --- a/packages/babel-plugin-transform-react-jsx/src/transform-classic.js +++ b/packages/babel-plugin-transform-react-jsx/src/transform-classic.js @@ -53,16 +53,20 @@ export default declare((api, options) => { let pragma = PRAGMA_DEFAULT; let pragmaFrag = PRAGMA_FRAG_DEFAULT; + let pragmaSet = !!options.pragma; + let pragmaFragSet = !!options.pragma; 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; } } } @@ -70,8 +74,8 @@ export default declare((api, options) => { state.set("jsxIdentifier", createIdentifierParser(pragma)); state.set("jsxFragIdentifier", createIdentifierParser(pragmaFrag)); state.set("usedFragment", false); - state.set("pragmaSet", pragma !== DEFAULT.pragma); - state.set("pragmaFragSet", pragmaFrag !== DEFAULT.pragmaFrag); + state.set("pragmaSet", pragmaSet); + state.set("pragmaFragSet", pragmaFragSet); }, exit(path, state) { if ( diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/input.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/input.js new file mode 100644 index 0000000000..b0dacd1181 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/input.js @@ -0,0 +1,3 @@ +/* @jsxFrag React.Fragment */ +/* @jsx h */ +<>Test; diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/options.json new file mode 100644 index 0000000000..5e1d82404d --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/options.json @@ -0,0 +1,5 @@ +{ + "plugins": [ + "transform-react-jsx" + ] +} diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/output.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/output.js new file mode 100644 index 0000000000..8a621e8a45 --- /dev/null +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/regression/pragma-frag-set-default/output.js @@ -0,0 +1,4 @@ +/* @jsxFrag React.Fragment */ + +/* @jsx h */ +h(React.Fragment, null, "Test"); diff --git a/packages/babel-preset-react/test/fixtures/regression/11294/input.mjs b/packages/babel-preset-react/test/fixtures/regression/11294/input.mjs new file mode 100644 index 0000000000..ce3a2d3fff --- /dev/null +++ b/packages/babel-preset-react/test/fixtures/regression/11294/input.mjs @@ -0,0 +1,2 @@ +import React from 'react'; +const D = <>; diff --git a/packages/babel-preset-react/test/fixtures/regression/11294/options.json b/packages/babel-preset-react/test/fixtures/regression/11294/options.json new file mode 100644 index 0000000000..238981a96b --- /dev/null +++ b/packages/babel-preset-react/test/fixtures/regression/11294/options.json @@ -0,0 +1,4 @@ +{ + "presets": [ + ["react", { "pragma": "__jsx" }]] +} diff --git a/packages/babel-preset-react/test/fixtures/regression/11294/output.mjs b/packages/babel-preset-react/test/fixtures/regression/11294/output.mjs new file mode 100644 index 0000000000..91e0be8760 --- /dev/null +++ b/packages/babel-preset-react/test/fixtures/regression/11294/output.mjs @@ -0,0 +1,3 @@ +import React from 'react'; + +const D = __jsx(React.Fragment, null);