diff --git a/compiler/forget/src/CompilerPipeline.ts b/compiler/forget/src/CompilerPipeline.ts index 92d2cc8cb3..fba60ba925 100644 --- a/compiler/forget/src/CompilerPipeline.ts +++ b/compiler/forget/src/CompilerPipeline.ts @@ -61,10 +61,8 @@ export function* run( const hir = lower(func, env).unwrap(); yield log({ kind: "hir", name: "HIR", value: hir }); - if (config?.inlineUseMemo) { - inlineUseMemo(hir); - yield log({ kind: "hir", name: "RewriteUseMemo", value: hir }); - } + inlineUseMemo(hir); + yield log({ kind: "hir", name: "RewriteUseMemo", value: hir }); mergeConsecutiveBlocks(hir); yield log({ kind: "hir", name: "MergeConsecutiveBlocks", value: hir }); diff --git a/compiler/forget/src/HIR/Environment.ts b/compiler/forget/src/HIR/Environment.ts index 391830c7de..4e11375a52 100644 --- a/compiler/forget/src/HIR/Environment.ts +++ b/compiler/forget/src/HIR/Environment.ts @@ -40,7 +40,6 @@ const HOOK_PATTERN = /^_?use/; export type EnvironmentConfig = Partial<{ customHooks: Map; memoizeJsxElements: boolean; - inlineUseMemo: boolean; }>; export class Environment { diff --git a/compiler/forget/src/__tests__/compiler-test.ts b/compiler/forget/src/__tests__/compiler-test.ts index d29278f5c6..4e1a48d6fd 100644 --- a/compiler/forget/src/__tests__/compiler-test.ts +++ b/compiler/forget/src/__tests__/compiler-test.ts @@ -55,7 +55,6 @@ describe("React Forget", () => { }, ], ]), - inlineUseMemo: options.environment?.inlineUseMemo ?? false, }, logger: null, gating: options.gating, diff --git a/compiler/forget/src/__tests__/disableMemoizeJsxElements-test.ts b/compiler/forget/src/__tests__/disableMemoizeJsxElements-test.ts index 1148bc2aed..2a9408a152 100644 --- a/compiler/forget/src/__tests__/disableMemoizeJsxElements-test.ts +++ b/compiler/forget/src/__tests__/disableMemoizeJsxElements-test.ts @@ -50,7 +50,6 @@ describe("React Forget (Disable memoization of JSX elements)", () => { }, ], ]), - inlineUseMemo: options.environment?.inlineUseMemo ?? false, }, logger: null, gating: options.gating, diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.expect.md index 32323ebe93..7184c16a40 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a, b) { let x = useMemo(async () => { await a; @@ -16,7 +15,7 @@ function component(a, b) { ## Error ``` -[ReactForget] Invariant: Did not expect useMemo callback to be async or a generator (3:5) +[ReactForget] Invariant: Did not expect useMemo callback to be async or a generator (2:4) ``` \ No newline at end of file diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.js b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.js index abfaba0b4d..e9da86149c 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-async-callback.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a, b) { let x = useMemo(async () => { await a; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.expect.md index 79491f7ea1..63ff18a41a 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a, b) { let x = useMemo((c) => a, []); return x; @@ -14,7 +13,7 @@ function component(a, b) { ## Error ``` -[ReactForget] Invariant: Did not expect any arguments to useMemo callback (3:3) +[ReactForget] Invariant: Did not expect any arguments to useMemo callback (2:2) ``` \ No newline at end of file diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.js b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.js index 5d4ec61469..ae3c3379e1 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-args.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a, b) { let x = useMemo((c) => a, []); return x; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.expect.md index 0363040427..59bbb13d0b 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a, b) { // we don't handle generators at all so this test isn't // useful for now, but adding this test in case we do @@ -20,13 +19,13 @@ function component(a, b) { ``` [ReactForget] TodoError: (BuildHIR::lowerExpression) Handle YieldExpression expressions - 5 | // add support for generators in the future. - 6 | let x = useMemo(function* () { -> 7 | yield a; - | ^^^^^^^ - 8 | }, []); - 9 | return x; - 10 | } + 4 | // add support for generators in the future. + 5 | let x = useMemo(function* () { +> 6 | yield a; + | ^^^^^^^ + 7 | }, []); + 8 | return x; + 9 | } ``` \ No newline at end of file diff --git a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.js b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.js index 16844a352c..2a4739a0db 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/error.useMemo-callback-generator.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a, b) { // we don't handle generators at all so this test isn't // useful for now, but adding this test in case we do diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.expect.md index 0d3a3bb43f..900fc73558 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const x = useMemo(() => { if (props.cond) { @@ -18,7 +17,7 @@ function Component(props) { ## Code ```javascript -import * as React from "react"; // @inlineUseMemo +import * as React from "react"; function Component(props) { const $ = React.unstable_useMemoCache(4); let t17 = undefined; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.js index 5eaa671680..a39f3b2826 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-if-else-multiple-return.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const x = useMemo(() => { if (props.cond) { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.expect.md index a4fb6d314f..20668af6d0 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const [a, b] = useMemo(() => { const items = []; @@ -18,7 +17,7 @@ function Component(props) { ## Code ```javascript -import * as React from "react"; // @inlineUseMemo +import * as React from "react"; function Component(props) { const $ = React.unstable_useMemoCache(10); const c_0 = $[0] !== props.a; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.js index 861544699c..4f9f5f39c1 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-independently-memoizeable.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const [a, b] = useMemo(() => { const items = []; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.expect.md index 21d4a90e47..7218ad8e52 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a, b) { let x = useMemo(() => { if (a) { @@ -17,7 +16,7 @@ function component(a, b) { ## Code ```javascript -import * as React from "react"; // @inlineUseMemo +import * as React from "react"; function component(a, b) { const $ = React.unstable_useMemoCache(2); let t14 = undefined; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.js index 4ea0b5c3e7..8c3d193af1 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-inlining-block-return.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a, b) { let x = useMemo(() => { if (a) { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.expect.md index d52eb1dd2d..d0a3336633 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const x = useMemo(() => { label: { @@ -17,7 +16,6 @@ function Component(props) { ## Code ```javascript -// @inlineUseMemo function Component(props) { const t9 = props.value; const x = t9; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.js index e44bbcd49a..a23a7bda64 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-labeled-statement-unconditional-return.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const x = useMemo(() => { label: { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.expect.md index 075231e54c..bcbb93b90c 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const x = useMemo(() => props.a && props.b); return x; @@ -13,7 +12,6 @@ function Component(props) { ## Code ```javascript -// @inlineUseMemo function Component(props) { const t15 = props.a && props.b; const x = t15; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.js index 6892d2b26d..1bfbd0e3fa 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-logical.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const x = useMemo(() => props.a && props.b); return x; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.expect.md index 648af00d70..a876642a14 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const x = useMemo(() => { let y = []; @@ -23,7 +22,7 @@ function Component(props) { ## Code ```javascript -import * as React from "react"; // @inlineUseMemo +import * as React from "react"; function Component(props) { const $ = React.unstable_useMemoCache(2); const c_0 = $[0] !== props; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.js index f5aec98ace..24e10f21c9 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-multiple-if-else.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const x = useMemo(() => { let y = []; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.expect.md index 897defd568..be20ee39bd 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a) { let x = useMemo(() => { mutate(a); @@ -15,7 +14,6 @@ function component(a) { ## Code ```javascript -// @inlineUseMemo function component(a) { mutate(a); } diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.js index 40b06ab46f..0d9b54d989 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-return-empty.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a) { let x = useMemo(() => { mutate(a); diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md index eb059bf130..9d9a53d477 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function component(a) { let x = useMemo(() => [a], [a]); return ; @@ -13,7 +12,7 @@ function component(a) { ## Code ```javascript -import * as React from "react"; // @inlineUseMemo +import * as React from "react"; function component(a) { const $ = React.unstable_useMemoCache(4); const c_0 = $[0] !== a; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.js index 96c93e10c7..a680d099be 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-simple.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function component(a) { let x = useMemo(() => [a], [a]); return ; diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.expect.md b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.expect.md index 8ee4bcdff2..05fcf4bebb 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.expect.md +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.expect.md @@ -2,7 +2,6 @@ ## Input ```javascript -// @inlineUseMemo function Component(props) { const x = useMemo(() => { switch (props.key) { @@ -22,7 +21,6 @@ function Component(props) { ## Code ```javascript -// @inlineUseMemo function Component(props) { let t14 = undefined; bb8: switch (props.key) { diff --git a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.js b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.js index 09164664c0..74011509fb 100644 --- a/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.js +++ b/compiler/forget/src/__tests__/fixtures/compiler/useMemo-switch-no-fallthrough.js @@ -1,4 +1,3 @@ -// @inlineUseMemo function Component(props) { const x = useMemo(() => { switch (props.key) { diff --git a/compiler/forget/src/__tests__/test-utils/generateTestsFromFixtures.ts b/compiler/forget/src/__tests__/test-utils/generateTestsFromFixtures.ts index ffa4de7c80..568360f847 100644 --- a/compiler/forget/src/__tests__/test-utils/generateTestsFromFixtures.ts +++ b/compiler/forget/src/__tests__/test-utils/generateTestsFromFixtures.ts @@ -91,7 +91,6 @@ export default function generateTestsFromFixtures( let debug = false; let enableOnlyOnUseForgetDirective = false; let gating: GatingOptions | null = null; - let inlineUseMemo = true; let panicOnBailout = true; if (inputFile != null) { @@ -113,9 +112,6 @@ export default function generateTestsFromFixtures( importSpecifierName: "isForgetEnabled_Fixtures", }; } - if (lines[0]!.indexOf("@inlineUseMemo") !== -1) { - inlineUseMemo = true; - } if (lines[0]!.indexOf("@panicOnBailout false") !== -1) { panicOnBailout = false; } @@ -125,7 +121,7 @@ export default function generateTestsFromFixtures( let receivedOutput; if (input !== null) { receivedOutput = transform(input, basename, { - environment: { inlineUseMemo }, + environment: {}, logger: null, debug, enableOnlyOnUseForgetDirective,