Skip to content

Commit 71c1d62

Browse files
committed
[compiler] Support optional/logical/etc within try/catch (facebook#35606)
Adds support for value terminals (optional/logical/ternary/sequence) within try/catch clauses. Try/catch expressions insert maybe-throw terminals after each instruction, but BuildReactiveFunction's value block extraction was not expecting these terminals. The fix is to roughly treat maybe-throw similarly to goto, falling through to the continuation block, but there are a few edge cases to handle. I've also added extensive tests, including testing that errors correctly flow to the catch handler. DiffTrain build for [b8a6bfa](facebook@b8a6bfa)
1 parent 62d3894 commit 71c1d62

File tree

21 files changed

+336
-396
lines changed

21 files changed

+336
-396
lines changed

compiled-rn/VERSION_NATIVE_FB

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19.3.0-native-fb-d4a325df-20260202
1+
19.3.0-native-fb-b8a6bfa2-20260202

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-dev.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<841ec86af6ae2596726662a339f27cec>>
10+
* @generated SignedSource<<3345acd741e23ad266aef2263d66221c>>
1111
*/
1212

1313
"use strict";
@@ -410,5 +410,5 @@ __DEV__ &&
410410
exports.useFormStatus = function () {
411411
return resolveDispatcher().useHostTransitionStatus();
412412
};
413-
exports.version = "19.3.0-native-fb-d4a325df-20260202";
413+
exports.version = "19.3.0-native-fb-b8a6bfa2-20260202";
414414
})();

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-prod.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<dace7860105f2f67b7051c16bc646ff4>>
10+
* @generated SignedSource<<c17af8e427b030a1729ccab56dca2be5>>
1111
*/
1212

1313
"use strict";
@@ -209,4 +209,4 @@ exports.useFormState = function (action, initialState, permalink) {
209209
exports.useFormStatus = function () {
210210
return ReactSharedInternals.H.useHostTransitionStatus();
211211
};
212-
exports.version = "19.3.0-native-fb-d4a325df-20260202";
212+
exports.version = "19.3.0-native-fb-b8a6bfa2-20260202";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOM-profiling.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<dace7860105f2f67b7051c16bc646ff4>>
10+
* @generated SignedSource<<c17af8e427b030a1729ccab56dca2be5>>
1111
*/
1212

1313
"use strict";
@@ -209,4 +209,4 @@ exports.useFormState = function (action, initialState, permalink) {
209209
exports.useFormStatus = function () {
210210
return ReactSharedInternals.H.useHostTransitionStatus();
211211
};
212-
exports.version = "19.3.0-native-fb-d4a325df-20260202";
212+
exports.version = "19.3.0-native-fb-b8a6bfa2-20260202";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-dev.js

Lines changed: 124 additions & 134 deletions
Large diffs are not rendered by default.

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-prod.js

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<7405ed270300cfed96b6ccda422f4df2>>
10+
* @generated SignedSource<<89c3c5c4b39dcfc0a11ba59ba11e646e>>
1111
*/
1212

1313
/*
@@ -1993,8 +1993,6 @@ var KeyboardEventInterface = assign({}, UIEventInterface, {
19931993
isPrimary: 0
19941994
}),
19951995
SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),
1996-
SubmitEventInterface = assign({}, EventInterface, { submitter: 0 }),
1997-
SyntheticSubmitEvent = createSyntheticEvent(SubmitEventInterface),
19981996
TouchEventInterface = assign({}, UIEventInterface, {
19991997
touches: 0,
20001998
targetTouches: 0,
@@ -10864,12 +10862,7 @@ function recursivelyResetForms(parentFiber) {
1086410862
for (parentFiber = parentFiber.child; null !== parentFiber; ) {
1086510863
var fiber = parentFiber;
1086610864
recursivelyResetForms(fiber);
10867-
5 === fiber.tag &&
10868-
fiber.flags & 1024 &&
10869-
((fiber = fiber.stateNode),
10870-
(_enabled = !0),
10871-
fiber.reset(),
10872-
(_enabled = !1));
10865+
5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();
1087310866
parentFiber = parentFiber.sibling;
1087410867
}
1087510868
}
@@ -13712,9 +13705,6 @@ function dispatchEventForPluginEventSystem(
1371213705
case "pointerup":
1371313706
SyntheticEventCtor = SyntheticPointerEvent;
1371413707
break;
13715-
case "submit":
13716-
SyntheticEventCtor = SyntheticSubmitEvent;
13717-
break;
1371813708
case "toggle":
1371913709
case "beforetoggle":
1372013710
SyntheticEventCtor = SyntheticToggleEvent;
@@ -17746,14 +17736,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1774617736
};
1774717737
var isomorphicReactPackageVersion$jscomp$inline_2054 = React.version;
1774817738
if (
17749-
"19.3.0-native-fb-d4a325df-20260202" !==
17739+
"19.3.0-native-fb-b8a6bfa2-20260202" !==
1775017740
isomorphicReactPackageVersion$jscomp$inline_2054
1775117741
)
1775217742
throw Error(
1775317743
formatProdErrorMessage(
1775417744
527,
1775517745
isomorphicReactPackageVersion$jscomp$inline_2054,
17756-
"19.3.0-native-fb-d4a325df-20260202"
17746+
"19.3.0-native-fb-b8a6bfa2-20260202"
1775717747
)
1775817748
);
1775917749
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -17773,24 +17763,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1777317763
null === componentOrElement ? null : componentOrElement.stateNode;
1777417764
return componentOrElement;
1777517765
};
17776-
var internals$jscomp$inline_2634 = {
17766+
var internals$jscomp$inline_2638 = {
1777717767
bundleType: 0,
17778-
version: "19.3.0-native-fb-d4a325df-20260202",
17768+
version: "19.3.0-native-fb-b8a6bfa2-20260202",
1777917769
rendererPackageName: "react-dom",
1778017770
currentDispatcherRef: ReactSharedInternals,
17781-
reconcilerVersion: "19.3.0-native-fb-d4a325df-20260202"
17771+
reconcilerVersion: "19.3.0-native-fb-b8a6bfa2-20260202"
1778217772
};
1778317773
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
17784-
var hook$jscomp$inline_2635 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
17774+
var hook$jscomp$inline_2639 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
1778517775
if (
17786-
!hook$jscomp$inline_2635.isDisabled &&
17787-
hook$jscomp$inline_2635.supportsFiber
17776+
!hook$jscomp$inline_2639.isDisabled &&
17777+
hook$jscomp$inline_2639.supportsFiber
1778817778
)
1778917779
try {
17790-
(rendererID = hook$jscomp$inline_2635.inject(
17791-
internals$jscomp$inline_2634
17780+
(rendererID = hook$jscomp$inline_2639.inject(
17781+
internals$jscomp$inline_2638
1779217782
)),
17793-
(injectedHook = hook$jscomp$inline_2635);
17783+
(injectedHook = hook$jscomp$inline_2639);
1779417784
} catch (err) {}
1779517785
}
1779617786
exports.createRoot = function (container, options) {
@@ -17885,4 +17875,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1788517875
listenToAllSupportedEvents(container);
1788617876
return new ReactDOMHydrationRoot(initialChildren);
1788717877
};
17888-
exports.version = "19.3.0-native-fb-d4a325df-20260202";
17878+
exports.version = "19.3.0-native-fb-b8a6bfa2-20260202";

compiled-rn/facebook-fbsource/xplat/js/RKJSModules/vendor/react/react-dom/cjs/ReactDOMClient-profiling.js

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @noflow
88
* @nolint
99
* @preventMunge
10-
* @generated SignedSource<<938d563f7511ee7a34ede9ef4ad25fcf>>
10+
* @generated SignedSource<<76b753fb062b95878733ce8daeb258d5>>
1111
*/
1212

1313
/*
@@ -2071,8 +2071,6 @@ var KeyboardEventInterface = assign({}, UIEventInterface, {
20712071
isPrimary: 0
20722072
}),
20732073
SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),
2074-
SubmitEventInterface = assign({}, EventInterface, { submitter: 0 }),
2075-
SyntheticSubmitEvent = createSyntheticEvent(SubmitEventInterface),
20762074
TouchEventInterface = assign({}, UIEventInterface, {
20772075
touches: 0,
20782076
targetTouches: 0,
@@ -11807,12 +11805,7 @@ function recursivelyResetForms(parentFiber) {
1180711805
for (parentFiber = parentFiber.child; null !== parentFiber; ) {
1180811806
var fiber = parentFiber;
1180911807
recursivelyResetForms(fiber);
11810-
5 === fiber.tag &&
11811-
fiber.flags & 1024 &&
11812-
((fiber = fiber.stateNode),
11813-
(_enabled = !0),
11814-
fiber.reset(),
11815-
(_enabled = !1));
11808+
5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();
1181611809
parentFiber = parentFiber.sibling;
1181711810
}
1181811811
}
@@ -15683,9 +15676,6 @@ function dispatchEventForPluginEventSystem(
1568315676
case "pointerup":
1568415677
SyntheticEventCtor = SyntheticPointerEvent;
1568515678
break;
15686-
case "submit":
15687-
SyntheticEventCtor = SyntheticSubmitEvent;
15688-
break;
1568915679
case "toggle":
1569015680
case "beforetoggle":
1569115681
SyntheticEventCtor = SyntheticToggleEvent;
@@ -19735,14 +19725,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {
1973519725
};
1973619726
var isomorphicReactPackageVersion$jscomp$inline_2402 = React.version;
1973719727
if (
19738-
"19.3.0-native-fb-d4a325df-20260202" !==
19728+
"19.3.0-native-fb-b8a6bfa2-20260202" !==
1973919729
isomorphicReactPackageVersion$jscomp$inline_2402
1974019730
)
1974119731
throw Error(
1974219732
formatProdErrorMessage(
1974319733
527,
1974419734
isomorphicReactPackageVersion$jscomp$inline_2402,
19745-
"19.3.0-native-fb-d4a325df-20260202"
19735+
"19.3.0-native-fb-b8a6bfa2-20260202"
1974619736
)
1974719737
);
1974819738
ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
@@ -19764,10 +19754,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) {
1976419754
};
1976519755
var internals$jscomp$inline_2409 = {
1976619756
bundleType: 0,
19767-
version: "19.3.0-native-fb-d4a325df-20260202",
19757+
version: "19.3.0-native-fb-b8a6bfa2-20260202",
1976819758
rendererPackageName: "react-dom",
1976919759
currentDispatcherRef: ReactSharedInternals,
19770-
reconcilerVersion: "19.3.0-native-fb-d4a325df-20260202",
19760+
reconcilerVersion: "19.3.0-native-fb-b8a6bfa2-20260202",
1977119761
getLaneLabelMap: function () {
1977219762
for (
1977319763
var map = new Map(), lane = 1, index$336 = 0;
@@ -19785,16 +19775,16 @@ var internals$jscomp$inline_2409 = {
1978519775
}
1978619776
};
1978719777
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
19788-
var hook$jscomp$inline_2996 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
19778+
var hook$jscomp$inline_3000 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
1978919779
if (
19790-
!hook$jscomp$inline_2996.isDisabled &&
19791-
hook$jscomp$inline_2996.supportsFiber
19780+
!hook$jscomp$inline_3000.isDisabled &&
19781+
hook$jscomp$inline_3000.supportsFiber
1979219782
)
1979319783
try {
19794-
(rendererID = hook$jscomp$inline_2996.inject(
19784+
(rendererID = hook$jscomp$inline_3000.inject(
1979519785
internals$jscomp$inline_2409
1979619786
)),
19797-
(injectedHook = hook$jscomp$inline_2996);
19787+
(injectedHook = hook$jscomp$inline_3000);
1979819788
} catch (err) {}
1979919789
}
1980019790
exports.createRoot = function (container, options) {
@@ -19890,4 +19880,4 @@ exports.hydrateRoot = function (container, initialChildren, options) {
1989019880
listenToAllSupportedEvents(container);
1989119881
return new ReactDOMHydrationRoot(initialChildren);
1989219882
};
19893-
exports.version = "19.3.0-native-fb-d4a325df-20260202";
19883+
exports.version = "19.3.0-native-fb-b8a6bfa2-20260202";

0 commit comments

Comments
 (0)