Use the correct this in __self for JSX elements in arrows (#11288)
* Inject `__source` and `__self` in JSX elements earlier
This fixes an issue where `this` was not correct inside arrow functions, similar to
906f8be24d
* Add test
* Remove try-catch
* Update error
* Update fixtures
* Update windows fixtures
This commit is contained in:
@@ -5,5 +5,5 @@
|
||||
"transform-react-jsx-self"
|
||||
],
|
||||
"os": ["linux", "darwin"],
|
||||
"throws": "__source and __self should not be defined in props. You are most likely using the deprecated transform-react-jsx-self or transform-react-jsx-source Babel plugins. __source and __self will be set automatically in automatic runtime. Please remove transform-react-jsx-self or transform-react-jsx-source from your Babel config."
|
||||
"throws": "Duplicate __self prop found. You are most likely using the deprecated transform-react-jsx-self Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config."
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<div />;
|
||||
() => <div />;
|
||||
|
||||
function fn() {
|
||||
<div />;
|
||||
() => <div />;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
||||
|
||||
var _jsxFileName = "<CWD>/packages/babel-plugin-transform-react-jsx-development/test/fixtures/linux/self-inside-arrow/input.mjs",
|
||||
_this = this;
|
||||
|
||||
/*#__PURE__*/
|
||||
_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 1,
|
||||
columnNumber: 1
|
||||
}, this);
|
||||
|
||||
(function () {
|
||||
return /*#__PURE__*/_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 2,
|
||||
columnNumber: 7
|
||||
}, _this);
|
||||
});
|
||||
|
||||
function fn() {
|
||||
var _this2 = this;
|
||||
|
||||
/*#__PURE__*/
|
||||
_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 5,
|
||||
columnNumber: 3
|
||||
}, this);
|
||||
|
||||
(function () {
|
||||
return /*#__PURE__*/_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 6,
|
||||
columnNumber: 9
|
||||
}, _this2);
|
||||
});
|
||||
}
|
||||
@@ -6,5 +6,5 @@
|
||||
],
|
||||
"sourceType": "module",
|
||||
"os": ["linux", "darwin"],
|
||||
"throws": "__source and __self should not be defined in props. You are most likely using the deprecated transform-react-jsx-self or transform-react-jsx-source Babel plugins. __source and __self will be set automatically in automatic runtime. Please remove transform-react-jsx-self or transform-react-jsx-source from your Babel config."
|
||||
"throws": "Duplicate __self prop found. You are most likely using the deprecated transform-react-jsx-self Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config."
|
||||
}
|
||||
|
||||
@@ -4,5 +4,6 @@
|
||||
"transform-react-jsx-source",
|
||||
"transform-react-jsx-self"
|
||||
],
|
||||
"throws": "__source and __self should not be defined in props. You are most likely using the deprecated transform-react-jsx-self or transform-react-jsx-source Babel plugins. __source and __self will be set automatically in automatic runtime. Please remove transform-react-jsx-self or transform-react-jsx-source from your Babel config."
|
||||
"os": ["windows"],
|
||||
"throws": "Duplicate __self prop found. You are most likely using the deprecated transform-react-jsx-self Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config."
|
||||
}
|
||||
|
||||
@@ -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 = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(React.Fragment, {}, "foo", false, {
|
||||
var x = /*#__PURE__*/_reactJsxDevRuntime.jsxDEV(React.Fragment, {}, 'foo', false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 1,
|
||||
columnNumber: 9
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<div />;
|
||||
() => <div />;
|
||||
|
||||
function fn() {
|
||||
<div />;
|
||||
() => <div />;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import { jsxDEV as _jsxDEV } from "react/jsx-dev-runtime";
|
||||
|
||||
var _jsxFileName = "C:\\Users\\travis\\build\\babel\\babel\\packages\\babel-plugin-transform-react-jsx-development\\test\\fixtures\\windows\\self-inside-arrow-windows\\input.mjs",
|
||||
_this = this;
|
||||
|
||||
/*#__PURE__*/
|
||||
_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 1,
|
||||
columnNumber: 1
|
||||
}, this);
|
||||
|
||||
(function () {
|
||||
return /*#__PURE__*/_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 2,
|
||||
columnNumber: 7
|
||||
}, _this);
|
||||
});
|
||||
|
||||
function fn() {
|
||||
var _this2 = this;
|
||||
|
||||
/*#__PURE__*/
|
||||
_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 5,
|
||||
columnNumber: 3
|
||||
}, this);
|
||||
|
||||
(function () {
|
||||
return /*#__PURE__*/_jsxDEV("div", {}, void 0, false, {
|
||||
fileName: _jsxFileName,
|
||||
lineNumber: 6,
|
||||
columnNumber: 9
|
||||
}, _this2);
|
||||
});
|
||||
}
|
||||
@@ -6,5 +6,5 @@
|
||||
],
|
||||
"sourceType": "module",
|
||||
"os": ["windows"],
|
||||
"throws": "__source and __self should not be defined in props. You are most likely using the deprecated transform-react-jsx-self or transform-react-jsx-source Babel plugins. __source and __self will be set automatically in automatic runtime. Please remove transform-react-jsx-self or transform-react-jsx-source from your Babel config."
|
||||
"throws": "Duplicate __self prop found. You are most likely using the deprecated transform-react-jsx-self Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user