Skip to content

Commit

Permalink
[compiler] Implement support for hoisted and recursive functions
Browse files Browse the repository at this point in the history
Summary:
Introduces a new binding kind for functions that allows them to be hoisted. Also has the result of causing all nested function declarations to be outputted as function declarations, not as let bindings.

ghstack-source-id: fa40d4909fb3d30c23691e36510ebb3c3cc41053
Pull Request resolved: #30922

DiffTrain build for [d7167c3](d7167c3)
  • Loading branch information
mvitousek committed Sep 16, 2024
1 parent 2f4fba4 commit f5d6218
Show file tree
Hide file tree
Showing 34 changed files with 186 additions and 188 deletions.
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e78c9362c014dccaed5ff193106e44d7d072dc32
d7167c35059bc6a0ad84eb34e65b3b66328d5dd8
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION_TRANSFORMS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
e78c9362c014dccaed5ff193106e44d7d072dc32
d7167c35059bc6a0ad84eb34e65b3b66328d5dd8
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -2001,7 +2001,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -1981,7 +1981,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -17136,11 +17136,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-e78c9362-20240916",
version: "19.0.0-www-classic-d7167c35-20240916",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-classic-d7167c35-20240916"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -17174,7 +17174,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -16582,11 +16582,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-e78c9362-20240916",
version: "19.0.0-www-modern-d7167c35-20240916",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-modern-d7167c35-20240916"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -16620,7 +16620,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -10891,13 +10891,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1424 = {
bundleType: 0,
version: "19.0.0-www-classic-e78c9362-20240916",
version: "19.0.0-www-classic-d7167c35-20240916",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-classic-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-classic-d7167c35-20240916"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1425 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10923,4 +10923,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -10405,13 +10405,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1416 = {
bundleType: 0,
version: "19.0.0-www-modern-e78c9362-20240916",
version: "19.0.0-www-modern-d7167c35-20240916",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-modern-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-modern-d7167c35-20240916"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1417 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10437,4 +10437,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
28 changes: 14 additions & 14 deletions compiled/facebook-www/ReactDOM-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -18691,41 +18691,41 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmpm882611804$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmp322628415$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmpm882611804$1 = containerInfo.ownerDocument)
($jscomp$optchain$tmp322628415$1 = containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmpm882611804$1.defaultView)
: $jscomp$optchain$tmp322628415$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmpm882611804$1 = getActiveElement(
$jscomp$optchain$tmp322628415$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmpm882611804$1 instanceof
$jscomp$optchain$tmp322628415$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmpm882611804$1.contentWindow.location.href;
typeof $jscomp$optchain$tmp322628415$1.contentWindow.location.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmpm882611804$1.contentWindow;
containerInfo = $jscomp$optchain$tmp322628415$1.contentWindow;
else break;
$jscomp$optchain$tmpm882611804$1 = getActiveElement(
$jscomp$optchain$tmp322628415$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmpm882611804$1;
return $jscomp$optchain$tmp322628415$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -27890,11 +27890,11 @@ __DEV__ &&
: flushSyncErrorInBuildsThatSupportLegacyMode;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-classic-e78c9362-20240916" !== isomorphicReactPackageVersion)
if ("19.0.0-www-classic-d7167c35-20240916" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-classic-e78c9362-20240916\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-classic-d7167c35-20240916\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -27938,11 +27938,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-e78c9362-20240916",
version: "19.0.0-www-classic-d7167c35-20240916",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-classic-d7167c35-20240916"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -28595,7 +28595,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-classic-e78c9362-20240916";
exports.version = "19.0.0-www-classic-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
30 changes: 16 additions & 14 deletions compiled/facebook-www/ReactDOM-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -18025,41 +18025,43 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmp2107687197$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmpm1460914829$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmp2107687197$1 = containerInfo.ownerDocument)
($jscomp$optchain$tmpm1460914829$1 =
containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmp2107687197$1.defaultView)
: $jscomp$optchain$tmpm1460914829$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmp2107687197$1 = getActiveElement(
$jscomp$optchain$tmpm1460914829$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmp2107687197$1 instanceof
$jscomp$optchain$tmpm1460914829$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmp2107687197$1.contentWindow.location.href;
typeof $jscomp$optchain$tmpm1460914829$1.contentWindow.location
.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmp2107687197$1.contentWindow;
containerInfo = $jscomp$optchain$tmpm1460914829$1.contentWindow;
else break;
$jscomp$optchain$tmp2107687197$1 = getActiveElement(
$jscomp$optchain$tmpm1460914829$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmp2107687197$1;
return $jscomp$optchain$tmpm1460914829$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -27007,11 +27009,11 @@ __DEV__ &&
return_targetInst = null;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-modern-e78c9362-20240916" !== isomorphicReactPackageVersion)
if ("19.0.0-www-modern-d7167c35-20240916" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-modern-e78c9362-20240916\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-modern-d7167c35-20240916\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -27054,11 +27056,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-e78c9362-20240916",
version: "19.0.0-www-modern-d7167c35-20240916",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-e78c9362-20240916"
reconcilerVersion: "19.0.0-www-modern-d7167c35-20240916"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -27663,7 +27665,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-modern-e78c9362-20240916";
exports.version = "19.0.0-www-modern-d7167c35-20240916";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
Loading

0 comments on commit f5d6218

Please sign in to comment.