Restore default pragmas in preset-react for classic runtime (#11324)

This commit is contained in:
Brian Ng 2020-03-23 18:06:44 -05:00 committed by GitHub
parent 9b976b2164
commit 6a728a05a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 3 deletions

View File

@ -41,7 +41,7 @@ export default declare((api, options) => {
post(state, pass) {
state.callee = pass.get("jsxIdentifier")();
state.pure = PURE_ANNOTATION ?? !pass.get("pragmaSet");
state.pure = PURE_ANNOTATION ?? pass.get("pragma") === DEFAULT.pragma;
},
throwIfNamespace: THROW_IF_NAMESPACE,
@ -74,6 +74,7 @@ export default declare((api, options) => {
state.set("jsxIdentifier", createIdentifierParser(pragma));
state.set("jsxFragIdentifier", createIdentifierParser(pragmaFrag));
state.set("usedFragment", false);
state.set("pragma", pragma);
state.set("pragmaSet", pragmaSet);
state.set("pragmaFragSet", pragmaFragSet);
},

View File

@ -8,9 +8,9 @@ import transformReactJSXSelf from "@babel/plugin-transform-react-jsx-self";
export default declare((api, opts) => {
api.assertVersion(7);
let { pragma, pragmaFrag } = opts;
const {
pragma,
pragmaFrag,
pure,
throwIfNamespace = true,
useSpread,
@ -18,6 +18,12 @@ export default declare((api, opts) => {
importSource,
} = opts;
// TODO: (Babel 8) Remove setting these defaults
if (runtime === "classic") {
pragma = pragma || "React.createElement";
pragmaFrag = pragmaFrag || "React.Fragment";
}
// TODO: (Babel 8) Don't cast these options but validate it
const development = !!opts.development;
const useBuiltIns = !!opts.useBuiltIns;

View File

@ -0,0 +1,3 @@
/** @jsx jsx */
const Foo = <></>;

View File

@ -0,0 +1,3 @@
{
"presets": ["react"]
}

View File

@ -0,0 +1,2 @@
/** @jsx jsx */
const Foo = jsx(React.Fragment, null);