From 1cf8d9bc8b8ce905ce55043707fffb0b0c504e4f Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Wed, 20 Mar 2024 14:07:28 -0700 Subject: [PATCH] Repro for missing predecessor with try/catch Found when running the compiler on a large swath of internal code. PruneMaybeThrows rewrites terminals, but the logic to update subsequent phis was incorrectly dropping phis rather than rewriting them. Fixed in the next PR. --- .../error.repro-preds-undefined.expect.md | 28 +++++++++++++++++++ .../compiler/error.repro-preds-undefined.js | 13 +++++++++ 2 files changed, 41 insertions(+) create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.expect.md create mode 100644 compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.js diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.expect.md new file mode 100644 index 0000000000..587da7fd0c --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.expect.md @@ -0,0 +1,28 @@ + +## Input + +```javascript +// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions +function useSupportsTouchEvent() { + return useMemo(() => { + if (checkforTouchEvents) { + try { + document.createEvent("TouchEvent"); + return true; + } catch { + return false; + } + } + }, []); +} + +``` + + +## Error + +``` +Cannot read properties of undefined (reading 'preds') +``` + + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.js new file mode 100644 index 0000000000..a9500cb531 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/error.repro-preds-undefined.js @@ -0,0 +1,13 @@ +// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions +function useSupportsTouchEvent() { + return useMemo(() => { + if (checkforTouchEvents) { + try { + document.createEvent("TouchEvent"); + return true; + } catch { + return false; + } + } + }, []); +}