[compiler] rfc: Include location information in identifiers and reactive scopes for debugging

Summary: Using the change detection code to debug codebases that violate the rules of react is a lot easier when we have a source location corresponding to the value that has changed inappropriately. I didn't see an easy way to track that information in the existing data structures at the point of codegen, so this PR adds locations to identifiers and reactive scopes (the location of a reactive scope is the range of the locations of its included identifiers).

I'm interested if there's a better way to do this that I missed!

ghstack-source-id: aed5f7edda
Pull Request resolved: https://github.com/facebook/react/pull/29658

DiffTrain build for commit https://github.com/facebook/react/commit/ec6fe57a5027d60a959493a2e44b6872b8de0ab8.
This commit is contained in:
mvitousek
2024-05-31 21:14:33 +00:00
parent f50a2312e1
commit df9d22ca69
13 changed files with 35 additions and 35 deletions
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<b0cc5c4d6fedee7f4ad0da5a4287ec9e>>
* @generated SignedSource<<7121fa7b845cd31c5870c88c6fa25b5c>>
*/
'use strict';
@@ -23471,7 +23471,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
return root;
}
var ReactVersion = '19.0.0-rc-8b01a2e0bf-20240531';
var ReactVersion = '19.0.0-rc-ec6fe57a50-20240531';
/*
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<7a10cc1042dd4bdcad6d1a3fff738699>>
* @generated SignedSource<<a767e2d784efffdcb527342720e83211>>
*/
"use strict";
@@ -9298,7 +9298,7 @@ var devToolsConfig$jscomp$inline_1047 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-test-renderer"
};
var internals$jscomp$inline_1234 = {
@@ -9329,7 +9329,7 @@ var internals$jscomp$inline_1234 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1235 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<b54b5c707946ed4ed58878492bf71f2f>>
* @generated SignedSource<<25bc52028018b4546bd12e61380a73b8>>
*/
"use strict";
@@ -9920,7 +9920,7 @@ var devToolsConfig$jscomp$inline_1130 = {
throw Error("TestRenderer does not support findFiberByHostInstance()");
},
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-test-renderer"
};
(function (internals) {
@@ -9964,7 +9964,7 @@ var devToolsConfig$jscomp$inline_1130 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
});
exports._Scheduler = Scheduler;
exports.act = act;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<475b4fd7ea9a70bf7bfe31f1e178a18b>>
* @generated SignedSource<<44bcdb4c46826456ededea1e72cc2be0>>
*/
'use strict';
@@ -24,7 +24,7 @@ if (
}
var dynamicFlagsUntyped = require('ReactNativeInternalFeatureFlags');
var ReactVersion = '19.0.0-rc-8b01a2e0bf-20240531';
var ReactVersion = '19.0.0-rc-ec6fe57a50-20240531';
// Re-export dynamic flags from the internal module.
var dynamicFlags = dynamicFlagsUntyped; // We destructure each value before re-exporting to avoid a dynamic look-up on
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<eb0b86b207aef55edefc359a6a746af9>>
* @generated SignedSource<<e5243c56455c2a088b74238e1445640f>>
*/
"use strict";
@@ -604,4 +604,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-rc-8b01a2e0bf-20240531";
exports.version = "19.0.0-rc-ec6fe57a50-20240531";
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<4a17c8a462ff52305c35ef0f626bf522>>
* @generated SignedSource<<3edd519213c684c79b445f5e9e6edf80>>
*/
"use strict";
@@ -608,7 +608,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-rc-8b01a2e0bf-20240531";
exports.version = "19.0.0-rc-ec6fe57a50-20240531";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
@@ -1 +1 @@
8b01a2e0bf17adc6bb7b81d1d0063c7efe9ea8b1
ec6fe57a5027d60a959493a2e44b6872b8de0ab8
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<9f6f4c948cebb7f671aab7f24cab034e>>
* @generated SignedSource<<516e67251a0deec3519969bf98f2d194>>
*/
'use strict';
@@ -26206,7 +26206,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
return root;
}
var ReactVersion = '19.0.0-rc-8b01a2e0bf-20240531';
var ReactVersion = '19.0.0-rc-ec6fe57a50-20240531';
/*
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<42682435d91d8913a033807ada30a816>>
* @generated SignedSource<<5ce1e714a5bd0c697b1e6d9e64aadfb9>>
*/
"use strict";
@@ -10551,7 +10551,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1124 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10594,7 +10594,7 @@ var internals$jscomp$inline_1350 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1351 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<ce41707f3ee07509d2b83c84527bee87>>
* @generated SignedSource<<f5b8ad80da21827893f5f9f27e300c31>>
*/
"use strict";
@@ -11257,7 +11257,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1205 = {
findFiberByHostInstance: getInstanceFromNode,
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11313,7 +11313,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
});
exports.createPortal = function (children, containerTag) {
return createPortal$1(
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<37c5203bf8c2fedad86f672d81095925>>
* @generated SignedSource<<0ff9cf3d753b272bbf890bb5b06a2dfa>>
*/
'use strict';
@@ -26562,7 +26562,7 @@ identifierPrefix, onUncaughtError, onCaughtError, onRecoverableError, transition
return root;
}
var ReactVersion = '19.0.0-rc-8b01a2e0bf-20240531';
var ReactVersion = '19.0.0-rc-ec6fe57a50-20240531';
/*
* The `'' + value` pattern (used in perf-sensitive code) throws for Symbol
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<3f4af6626156bb6a470717b63036037c>>
* @generated SignedSource<<dd6dd461b940e0751a0d735607585f0c>>
*/
"use strict";
@@ -10696,11 +10696,11 @@ function traverseOwnerTreeUp(hierarchy, instance) {
traverseOwnerTreeUp(hierarchy, instance);
}
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-rc-8b01a2e0bf-20240531" !== isomorphicReactPackageVersion)
if ("19.0.0-rc-ec6fe57a50-20240531" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.0.0-rc-8b01a2e0bf-20240531\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.0.0-rc-ec6fe57a50-20240531\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -10750,7 +10750,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1192 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -10793,7 +10793,7 @@ var internals$jscomp$inline_1439 = {
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1440 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -7,7 +7,7 @@
* @noflow
* @nolint
* @preventMunge
* @generated SignedSource<<e8cb604a250411d61568d30bd0e3f160>>
* @generated SignedSource<<8dc8827599713b55d851d283a46dc562>>
*/
"use strict";
@@ -11403,11 +11403,11 @@ function traverseOwnerTreeUp(hierarchy, instance) {
traverseOwnerTreeUp(hierarchy, instance);
}
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-rc-8b01a2e0bf-20240531" !== isomorphicReactPackageVersion)
if ("19.0.0-rc-ec6fe57a50-20240531" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-native-renderer: 19.0.0-rc-8b01a2e0bf-20240531\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-native-renderer: 19.0.0-rc-ec6fe57a50-20240531\nLearn more: https://react.dev/warnings/version-mismatch")
);
if (
"function" !==
@@ -11457,7 +11457,7 @@ var roots = new Map(),
devToolsConfig$jscomp$inline_1273 = {
findFiberByHostInstance: getInstanceFromTag,
bundleType: 0,
version: "19.0.0-rc-8b01a2e0bf-20240531",
version: "19.0.0-rc-ec6fe57a50-20240531",
rendererPackageName: "react-native-renderer",
rendererConfig: {
getInspectorDataForInstance: getInspectorDataForInstance,
@@ -11513,7 +11513,7 @@ var roots = new Map(),
scheduleRoot: null,
setRefreshHandler: null,
getCurrentFiber: null,
reconcilerVersion: "19.0.0-rc-8b01a2e0bf-20240531"
reconcilerVersion: "19.0.0-rc-ec6fe57a50-20240531"
});
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
computeComponentStackForErrorReporting: function (reactTag) {