diff --git a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts index 7982942333..f57e96e4e6 100644 --- a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts +++ b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts @@ -210,6 +210,13 @@ function* runWithEnvironment( value: reactiveFunction, }); + pruneUnusedLabels(reactiveFunction); + yield log({ + kind: "reactive", + name: "PruneUnusedLabels", + value: reactiveFunction, + }); + memoizeFbtOperandsInSameScope(reactiveFunction); yield log({ kind: "reactive", @@ -320,13 +327,6 @@ function* runWithEnvironment( value: reactiveFunction, }); - pruneUnusedLabels(reactiveFunction); - yield log({ - kind: "reactive", - name: "PruneUnusedLabels", - value: reactiveFunction, - }); - pruneUnusedLValues(reactiveFunction); yield log({ kind: "reactive", diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.expect.md b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.expect.md new file mode 100644 index 0000000000..dfa5077e00 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.expect.md @@ -0,0 +1,49 @@ + +## Input + +```javascript +function Component(props) { + const items = (() => { + return foo() ?? []; + })(); + items.push(props.a); + return items; +} + +export const FIXTURE_ENTRYPOINT = { + fn: Component, + params: [{ a: {} }], +}; + +``` + +## Code + +```javascript +import { unstable_useMemoCache as useMemoCache } from "react"; +function Component(props) { + const $ = useMemoCache(3); + let t10; + let items; + if ($[0] !== props.a) { + t10 = foo() ?? []; + items = t10; + + items.push(props.a); + $[0] = props.a; + $[1] = items; + $[2] = t10; + } else { + items = $[1]; + t10 = $[2]; + } + return items; +} + +export const FIXTURE_ENTRYPOINT = { + fn: Component, + params: [{ a: {} }], +}; + +``` + \ No newline at end of file diff --git a/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.js b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.js new file mode 100644 index 0000000000..adf84e69e4 --- /dev/null +++ b/compiler/packages/babel-plugin-react-forget/src/__tests__/fixtures/compiler/iife-return-modified-later-logical.js @@ -0,0 +1,12 @@ +function Component(props) { + const items = (() => { + return foo() ?? []; + })(); + items.push(props.a); + return items; +} + +export const FIXTURE_ENTRYPOINT = { + fn: Component, + params: [{ a: {} }], +};