@samitouri / QOS-React / commits / 70b52beca6

[compiler] `@enablePreserveExistingMemoizationGuarantees` on by default (#34689)

This enables `@enablePreserveExistingMemoizationGuarantees` by default. As of the previous PR (#34503), this mode now enables the following behaviors: - Treating variables referenced within a `useMemo()` or `useCallback()` as "frozen" (immutable) as of the start of the call. Ie, the compiler will assume that the values you reference are not mutated by the body of the useMemo, not are they mutated later. Directly modifying them (eg `var.property = true`) will be an error. - Similarly, the results of the useMemo/useCallback are treated as frozen (immutable) after the call. These two rules match the behavior for other hooks: this means that developers will see similar behavior to swapping out `useMemo()` for a custom `useMyMemo()` wrapper/alias. Additionally, as of #34503 the compiler uses information from the manual dependencies to know which variables are non-nullable. Even if a useMemo block conditionally accesses a nested property — `if (cond) { log(x.y.z) }` — where the compiler would not usually know that `x` is non-nullable, if the user specifies `x.y.z` as a manual dependency then the compiler knows that `x` and `x.y` are non-nullable and can infer a more precise dependency. Finally, this mode also ensures that we always memoize function calls that return primitives. See #34343 for more details. For now, I've explicitly opted out of this feature in all test fixtures where the behavior changed.

Joseph Savona committed Oct 2, 2025 at 10:25 UTC 70b52beca64aeac447a6cf57cfe1fda0691435c1
103 files changed +138 -79
compiler/packages/babel-plugin-react-compiler/src/HIR/Environment.ts
+1 -1
@@ -210,7 +210,7 @@ export const EnvironmentConfigSchema = z.object({
210 * that if a useEffect or useCallback references a function value, that function value will be
211 * considered frozen, and in turn all of its referenced variables will be considered frozen as well.
212 */
213 - enablePreserveExistingMemoizationGuarantees: z.boolean().default(false),
213 + enablePreserveExistingMemoizationGuarantees: z.boolean().default(true),
214
215 /**
216 * Validates that all useMemo/useCallback values are also memoized by Forget. This mode can be
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allocating-primitive-as-dep.expect.md
+3 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 // bar(props.b) is an allocating expression that produces a primitive, which means
7 // that Forget should memoize it.
8 // Correctness:
@@ -16,7 +17,8 @@ function AllocatingPrimitiveAsDep(props) {
17 ## Code
18
19 ```javascript
19 -import { c as _c } from "react/compiler-runtime"; // bar(props.b) is an allocating expression that produces a primitive, which means
20 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
21 +// bar(props.b) is an allocating expression that produces a primitive, which means
22 // that Forget should memoize it.
23 // Correctness:
24 // - y depends on either bar(props.b) or bar(props.b) + 1
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allocating-primitive-as-dep.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 // bar(props.b) is an allocating expression that produces a primitive, which means
3 // that Forget should memoize it.
4 // Correctness:
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-modify-global-in-callback-jsx.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7
8 const someGlobal = {value: 0};
@@ -32,7 +33,7 @@ export const FIXTURE_ENTRYPOINT = {
33 ## Code
34
35 ```javascript
35 -import { c as _c } from "react/compiler-runtime";
36 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
37 import { useMemo } from "react";
38
39 const someGlobal = { value: 0 };
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/allow-modify-global-in-callback-jsx.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3
4 const someGlobal = {value: 0};
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/computed-load-primitive-as-dependency.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 function Component(props) {
7 let a = foo();
8 // freeze `a` so we know the next line cannot mutate it
@@ -17,7 +18,7 @@ function Component(props) {
18 ## Code
19
20 ```javascript
20 -import { c as _c } from "react/compiler-runtime";
21 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
22 function Component(props) {
23 const $ = _c(2);
24 const a = foo();
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/computed-load-primitive-as-dependency.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 function Component(props) {
3 let a = foo();
4 // freeze `a` so we know the next line cannot mutate it
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/constant-propagation-template-literal.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {Stringify, identity} from 'shared-runtime';
7
8 function foo() {
@@ -64,7 +65,7 @@ export const FIXTURE_ENTRYPOINT = {
65 ## Code
66
67 ```javascript
67 -import { c as _c } from "react/compiler-runtime";
68 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
69 import { Stringify, identity } from "shared-runtime";
70
71 function foo() {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/constant-propagation-template-literal.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {Stringify, identity} from 'shared-runtime';
3
4 function foo() {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/context-variable-as-jsx-element-tag.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -25,7 +26,7 @@ export const FIXTURE_ENTRYPOINT = {
26 ## Code
27
28 ```javascript
28 -import { c as _c } from "react/compiler-runtime";
29 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
30 import { useMemo } from "react";
31 import { Stringify } from "shared-runtime";
32
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/context-variable-as-jsx-element-tag.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/destructure-direct-reassignment.expect.md
+2
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 function foo(props) {
7 let x, y;
8 ({x, y} = {x: props.a, y: props.b});
@@ -21,6 +22,7 @@ export const FIXTURE_ENTRYPOINT = {
22 ## Code
23
24 ```javascript
25 +// @enablePreserveExistingMemoizationGuarantees:false
26 function foo(props) {
27 let x;
28 let y;
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/destructure-direct-reassignment.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 function foo(props) {
3 let x, y;
4 ({x, y} = {x: props.a, y: props.b});
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-uncalled-function-capturing-mutable-values-memoizes-with-captures-values.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @flow @enableNewMutationAliasingModel
5 +// @flow @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
6 /**
7 * This hook returns a function that when called with an input object,
8 * will return the result of mapping that input with the supplied map
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.invalid-uncalled-function-capturing-mutable-values-memoizes-with-captures-values.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @flow @enableNewMutationAliasingModel
1 +// @flow @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
2 /**
3 * This hook returns a function that when called with an input object,
4 * will return the result of mapping that input with the supplied map
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.repro-preserve-memoization-inner-destructured-value-mistaken-as-dependency-later-mutation.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6
7 /**
8 * Repro from https://github.com/facebook/react/issues/34262
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.repro-preserve-memoization-inner-destructured-value-mistaken-as-dependency-later-mutation.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2
3 /**
4 * Repro from https://github.com/facebook/react/issues/34262
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.repro-preserve-memoization-inner-destructured-value-mistaken-as-dependency-mutated-dep.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6
7 import {identity, Stringify, useHook} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.repro-preserve-memoization-inner-destructured-value-mistaken-as-dependency-mutated-dep.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2
3 import {identity, Stringify, useHook} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-capture-in-invoked-function-inferred-as-mutation.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @flow @validatePreserveExistingMemoizationGuarantees
5 +// @flow @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {logValue, useFragment, useHook, typedLog} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-capture-in-invoked-function-inferred-as-mutation.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @flow @validatePreserveExistingMemoizationGuarantees
1 +// @flow @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {logValue, useFragment, useHook, typedLog} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @flow @validatePreserveExistingMemoizationGuarantees
5 +// @flow @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useFragment} from 'react-relay';
7 import LogEvent from 'LogEvent';
8 import {useCallback, useMemo} from 'react';
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-missed-memoization-from-inferred-mutation-in-logger.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @flow @validatePreserveExistingMemoizationGuarantees
1 +// @flow @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useFragment} from 'react-relay';
3 import LogEvent from 'LogEvent';
4 import {useCallback, useMemo} from 'react';
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-unmemoized-callback-captured-in-context-variable.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {ValidateMemoization, useHook} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.todo-repro-unmemoized-callback-captured-in-context-variable.tsx
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {ValidateMemoization, useHook} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.validate-object-entries-mutation.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {makeObject_Primitives, Stringify} from 'shared-runtime';
7
8 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.validate-object-entries-mutation.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {makeObject_Primitives, Stringify} from 'shared-runtime';
3
4 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.validate-object-values-mutation.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {makeObject_Primitives, Stringify} from 'shared-runtime';
7
8 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/error.validate-object-values-mutation.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {makeObject_Primitives, Stringify} from 'shared-runtime';
3
4 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/existing-variables-with-c-name.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo, useState} from 'react';
7 import {ValidateMemoization} from 'shared-runtime';
8
@@ -28,7 +29,7 @@ export const FIXTURE_ENTRYPOINT = {
29 ## Code
30
31 ```javascript
31 -import { c as _c2 } from "react/compiler-runtime";
32 +import { c as _c2 } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
33 import { useMemo, useState } from "react";
34 import { ValidateMemoization } from "shared-runtime";
35
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/existing-variables-with-c-name.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo, useState} from 'react';
3 import {ValidateMemoization} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fbt/bug-fbt-plural-multiple-function-calls.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import fbt from 'fbt';
7
8 /**
@@ -35,7 +36,7 @@ export const FIXTURE_ENTRYPOINT = {
36 ## Code
37
38 ```javascript
38 -import { c as _c } from "react/compiler-runtime";
39 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
40 import fbt from "fbt";
41
42 /**
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/fbt/bug-fbt-plural-multiple-function-calls.ts
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import fbt from 'fbt';
3
4 /**
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/for-in-statement-type-inference.expect.md
+2
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 const {identity, mutate} = require('shared-runtime');
7
8 function Component(props) {
@@ -24,6 +25,7 @@ export const FIXTURE_ENTRYPOINT = {
25 ## Code
26
27 ```javascript
28 +// @enablePreserveExistingMemoizationGuarantees:false
29 const { identity, mutate } = require("shared-runtime");
30
31 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/for-in-statement-type-inference.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 const {identity, mutate} = require('shared-runtime');
3
4 function Component(props) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hooks-with-prefix.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @hookPattern:".*\b(use[^$]+)$"
5 +// @hookPattern:".*\b(use[^$]+)$" @enablePreserveExistingMemoizationGuarantees:false
6
7 import * as React from 'react';
8 import {makeArray, useHook} from 'shared-runtime';
@@ -36,7 +36,7 @@ export const FIXTURE_ENTRYPOINT = {
36 ## Code
37
38 ```javascript
39 -import { c as _c } from "react/compiler-runtime"; // @hookPattern:".*\b(use[^$]+)$"
39 +import { c as _c } from "react/compiler-runtime"; // @hookPattern:".*\b(use[^$]+)$" @enablePreserveExistingMemoizationGuarantees:false
40
41 import * as React from "react";
42 import { makeArray, useHook } from "shared-runtime";
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/hooks-with-prefix.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @hookPattern:".*\b(use[^$]+)$"
1 +// @hookPattern:".*\b(use[^$]+)$" @enablePreserveExistingMemoizationGuarantees:false
2
3 import * as React from 'react';
4 import {makeArray, useHook} from 'shared-runtime';
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-computed-delete.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @debug
5 +// @debug @enablePreserveExistingMemoizationGuarantees:false
6 function Component(props) {
7 const x = makeObject();
8 const y = delete x[props.value];
@@ -14,7 +14,7 @@ function Component(props) {
14 ## Code
15
16 ```javascript
17 -// @debug
17 +// @debug @enablePreserveExistingMemoizationGuarantees:false
18 function Component(props) {
19 const x = makeObject();
20 const y = delete x[props.value];
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-computed-delete.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @debug
1 +// @debug @enablePreserveExistingMemoizationGuarantees:false
2 function Component(props) {
3 const x = makeObject();
4 const y = delete x[props.value];
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-property-delete.expect.md
+2
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 function Component(props) {
7 const x = makeObject();
8 const y = delete x.value;
@@ -13,6 +14,7 @@ function Component(props) {
14 ## Code
15
16 ```javascript
17 +// @enablePreserveExistingMemoizationGuarantees:false
18 function Component(props) {
19 const x = makeObject();
20 const y = delete x.value;
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-property-delete.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 function Component(props) {
3 const x = makeObject();
4 const y = delete x.value;
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.invalid-useCallback-captures-reassigned-context.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees @enableNewMutationAliasingModel
5 +// @validatePreserveExistingMemoizationGuarantees @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {makeArray} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/error.invalid-useCallback-captures-reassigned-context.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees @enableNewMutationAliasingModel
1 +// @validatePreserveExistingMemoizationGuarantees @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {makeArray} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity-function-expression.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {identity, ValidateMemoization} from 'shared-runtime';
8
@@ -32,7 +33,7 @@ export const FIXTURE_ENTRYPOINT = {
33 ## Code
34
35 ```javascript
35 -import { c as _c } from "react/compiler-runtime";
36 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
37 import { useMemo } from "react";
38 import { identity, ValidateMemoization } from "shared-runtime";
39
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity-function-expression.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {identity, ValidateMemoization} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {identity, ValidateMemoization} from 'shared-runtime';
8
@@ -29,7 +30,7 @@ export const FIXTURE_ENTRYPOINT = {
30 ## Code
31
32 ```javascript
32 -import { c as _c } from "react/compiler-runtime";
33 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
34 import { useMemo } from "react";
35 import { identity, ValidateMemoization } from "shared-runtime";
36
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/mutate-through-identity.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {identity, ValidateMemoization} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-control-flow-sensitive-mutation.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 mutate,
@@ -49,7 +50,7 @@ export const FIXTURE_ENTRYPOINT = {
50 ## Code
51
52 ```javascript
52 -import { c as _c } from "react/compiler-runtime";
53 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
54 import { useMemo } from "react";
55 import {
56 mutate,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-control-flow-sensitive-mutation.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 mutate,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-transitivity-createfrom-capture-lambda.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 typedCapture,
@@ -41,7 +42,7 @@ export const FIXTURE_ENTRYPOINT = {
42 ## Code
43
44 ```javascript
44 -import { c as _c } from "react/compiler-runtime";
45 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
46 import { useMemo } from "react";
47 import {
48 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/todo-transitivity-createfrom-capture-lambda.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-add-captured-array-to-itself.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 typedCapture,
@@ -42,7 +43,7 @@ export const FIXTURE_ENTRYPOINT = {
43 ## Code
44
45 ```javascript
45 -import { c as _c } from "react/compiler-runtime";
46 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
47 import { useMemo } from "react";
48 import {
49 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-add-captured-array-to-itself.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom-lambda.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 typedCapture,
@@ -40,7 +41,7 @@ export const FIXTURE_ENTRYPOINT = {
41 ## Code
42
43 ```javascript
43 -import { c as _c } from "react/compiler-runtime";
44 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
45 import { useMemo } from "react";
46 import {
47 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom-lambda.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 typedCapture,
@@ -36,7 +37,7 @@ export const FIXTURE_ENTRYPOINT = {
37 ## Code
38
39 ```javascript
39 -import { c as _c } from "react/compiler-runtime";
40 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
41 import { useMemo } from "react";
42 import {
43 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-capture-createfrom.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-phi-assign-or-capture.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {
8 typedCapture,
@@ -40,7 +41,7 @@ export const FIXTURE_ENTRYPOINT = {
41 ## Code
42
43 ```javascript
43 -import { c as _c } from "react/compiler-runtime";
44 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
45 import { useMemo } from "react";
46 import {
47 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/transitivity-phi-assign-or-capture.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {
4 typedCapture,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-deplist-controlflow.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @enableNewMutationAliasingModel
5 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -36,7 +36,7 @@ export const FIXTURE_ENTRYPOINT = {
36 ## Code
37
38 ```javascript
39 -import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel
39 +import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
40 import { useCallback } from "react";
41 import { Stringify } from "shared-runtime";
42
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-deplist-controlflow.tsx
+1 -1
@@ -1,4 +1,4 @@
1 -// @enableNewMutationAliasingModel
1 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-depslist-assignment.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @enableNewMutationAliasingModel
5 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -31,7 +31,7 @@ export const FIXTURE_ENTRYPOINT = {
31 ## Code
32
33 ```javascript
34 -import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel
34 +import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
35 import { useCallback } from "react";
36 import { Stringify } from "shared-runtime";
37
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useCallback-reordering-depslist-assignment.tsx
+1 -1
@@ -1,4 +1,4 @@
1 -// @enableNewMutationAliasingModel
1 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useMemo-reordering-depslist-assignment.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @enableNewMutationAliasingModel
5 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7
8 function useFoo(arr1, arr2) {
@@ -27,7 +27,7 @@ export const FIXTURE_ENTRYPOINT = {
27 ## Code
28
29 ```javascript
30 -import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel
30 +import { c as _c } from "react/compiler-runtime"; // @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
31 import { useMemo } from "react";
32
33 function useFoo(arr1, arr2) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/new-mutability/useMemo-reordering-depslist-assignment.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @enableNewMutationAliasingModel
1 +// @enableNewMutationAliasingModel @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3
4 function useFoo(arr1, arr2) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.false-positive-useMemo-infer-mutate-deps.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {identity} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.false-positive-useMemo-infer-mutate-deps.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {identity} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.hoist-useCallback-conditional-access-own-scope.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7
8 function Component({propA, propB}) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.hoist-useCallback-conditional-access-own-scope.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3
4 function Component({propA, propB}) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.hoist-useCallback-infer-conditional-value-block.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {identity, mutate} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.hoist-useCallback-infer-conditional-value-block.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {identity, mutate} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.invalid-useCallback-captures-reassigned-context.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6
7 import {useCallback} from 'react';
8 import {makeArray} from 'shared-runtime';
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.invalid-useCallback-captures-reassigned-context.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2
3 import {useCallback} from 'react';
4 import {makeArray} from 'shared-runtime';
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useCallback-conditional-access-noAlloc.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7
8 function Component({propA, propB}) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useCallback-conditional-access-noAlloc.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3
4 function Component({propA, propB}) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useCallback-infer-less-specific-conditional-access.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {mutate} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useCallback-infer-less-specific-conditional-access.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {mutate} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useMemo-infer-less-specific-conditional-access.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {mutate} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useMemo-infer-less-specific-conditional-access.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {mutate} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useMemo-infer-less-specific-conditional-value-block.expect.md
+1 -1
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validatePreserveExistingMemoizationGuarantees
5 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {identity, mutate} from 'shared-runtime';
8
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/error.useMemo-infer-less-specific-conditional-value-block.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validatePreserveExistingMemoizationGuarantees
1 +// @validatePreserveExistingMemoizationGuarantees @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {identity, mutate} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-reordering-deplist-controlflow.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -35,7 +36,7 @@ export const FIXTURE_ENTRYPOINT = {
36 ## Code
37
38 ```javascript
38 -import { c as _c } from "react/compiler-runtime";
39 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
40 import { useCallback } from "react";
41 import { Stringify } from "shared-runtime";
42
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-reordering-deplist-controlflow.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-reordering-depslist-assignment.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useCallback} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -30,7 +31,7 @@ export const FIXTURE_ENTRYPOINT = {
31 ## Code
32
33 ```javascript
33 -import { c as _c } from "react/compiler-runtime";
34 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
35 import { useCallback } from "react";
36 import { Stringify } from "shared-runtime";
37
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useCallback-reordering-depslist-assignment.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useCallback} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-reordering-depslist-assignment.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7
8 function useFoo(arr1, arr2) {
@@ -26,7 +27,7 @@ export const FIXTURE_ENTRYPOINT = {
27 ## Code
28
29 ```javascript
29 -import { c as _c } from "react/compiler-runtime";
30 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
31 import { useMemo } from "react";
32
33 function useFoo(arr1, arr2) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-reordering-depslist-assignment.ts
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3
4 function useFoo(arr1, arr2) {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-reordering-depslist-controlflow.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {Stringify} from 'shared-runtime';
8
@@ -35,7 +36,7 @@ export const FIXTURE_ENTRYPOINT = {
36 ## Code
37
38 ```javascript
38 -import { c as _c } from "react/compiler-runtime";
39 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
40 import { useMemo } from "react";
41 import { Stringify } from "shared-runtime";
42
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/preserve-memo-validation/useMemo-reordering-depslist-controlflow.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {Stringify} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-no-declarations-in-reactive-scope-with-early-return.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
5 +// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions @enablePreserveExistingMemoizationGuarantees:false
6 function Component() {
7 const items = useItems();
8 const filteredItems = useMemo(
@@ -37,7 +37,7 @@ function Component() {
37 ## Code
38
39 ```javascript
40 -import { c as _c } from "react/compiler-runtime"; // @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
40 +import { c as _c } from "react/compiler-runtime"; // @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions @enablePreserveExistingMemoizationGuarantees:false
41 function Component() {
42 const $ = _c(6);
43 const items = useItems();
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-no-declarations-in-reactive-scope-with-early-return.js
+1 -1
@@ -1,4 +1,4 @@
1 -// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
1 +// @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions @enablePreserveExistingMemoizationGuarantees:false
2 function Component() {
3 const items = useItems();
4 const filteredItems = useMemo(
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-renaming-conflicting-decls.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {Stringify, identity, makeArray, toJSON} from 'shared-runtime';
7 import {useMemo} from 'react';
8
@@ -40,7 +41,7 @@ export const FIXTURE_ENTRYPOINT = {
41 ## Code
42
43 ```javascript
43 -import { c as _c } from "react/compiler-runtime";
44 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
45 import { Stringify, identity, makeArray, toJSON } from "shared-runtime";
46 import { useMemo } from "react";
47
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-renaming-conflicting-decls.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {Stringify, identity, makeArray, toJSON} from 'shared-runtime';
3 import {useMemo} from 'react';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ts-non-null-expression-default-value.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 const THEME_MAP: ReadonlyMap<string, string> = new Map([
7 ['default', 'light'],
8 ['dark', 'dark'],
@@ -21,7 +22,7 @@ export const FIXTURE_ENTRYPOINT = {
22 ## Code
23
24 ```javascript
24 -import { c as _c } from "react/compiler-runtime";
25 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
26 const THEME_MAP: ReadonlyMap<string, string> = new Map([
27 ["default", "light"],
28 ["dark", "dark"],
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/ts-non-null-expression-default-value.tsx
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 const THEME_MAP: ReadonlyMap<string, string> = new Map([
3 ['default', 'light'],
4 ['dark', 'dark'],
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/unary-expr.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 function component(a) {
7 let t = {t: a};
8 let z = +t.t;
@@ -25,7 +26,7 @@ export const FIXTURE_ENTRYPOINT = {
26 ## Code
27
28 ```javascript
28 -import { c as _c } from "react/compiler-runtime";
29 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
30 function component(a) {
31 const $ = _c(8);
32 const t = { t: a };
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/unary-expr.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 function component(a) {
3 let t = {t: a};
4 let z = +t.t;
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useMemo-named-function.expect.md
+2 -2
@@ -2,7 +2,7 @@
2 ## Input
3
4 ```javascript
5 -// @validateNoSetStateInRender:false
5 +// @validateNoSetStateInRender:false @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 import {makeArray} from 'shared-runtime';
8
@@ -21,7 +21,7 @@ export const FIXTURE_ENTRYPOINT = {
21 ## Code
22
23 ```javascript
24 -import { c as _c } from "react/compiler-runtime"; // @validateNoSetStateInRender:false
24 +import { c as _c } from "react/compiler-runtime"; // @validateNoSetStateInRender:false @enablePreserveExistingMemoizationGuarantees:false
25 import { useMemo } from "react";
26 import { makeArray } from "shared-runtime";
27
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useMemo-named-function.ts
+1 -1
@@ -1,4 +1,4 @@
1 -// @validateNoSetStateInRender:false
1 +// @validateNoSetStateInRender:false @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 import {makeArray} from 'shared-runtime';
4
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useMemo-with-optional.expect.md
+2 -1
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 import {useMemo} from 'react';
7 function Component(props) {
8 return (
@@ -21,7 +22,7 @@ export const FIXTURE_ENTRYPOINT = {
22 ## Code
23
24 ```javascript
24 -import { c as _c } from "react/compiler-runtime";
25 +import { c as _c } from "react/compiler-runtime"; // @enablePreserveExistingMemoizationGuarantees:false
26 import { useMemo } from "react";
27 function Component(props) {
28 const $ = _c(2);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/useMemo-with-optional.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 import {useMemo} from 'react';
3 function Component(props) {
4 return (
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/while-with-assignment-in-test.expect.md
+2
@@ -2,6 +2,7 @@
2 ## Input
3
4 ```javascript
5 +// @enablePreserveExistingMemoizationGuarantees:false
6 function Component() {
7 const queue = [1, 2, 3];
8 let value = 0;
@@ -22,6 +23,7 @@ export const FIXTURE_ENTRYPOINT = {
23 ## Code
24
25 ```javascript
26 +// @enablePreserveExistingMemoizationGuarantees:false
27 function Component() {
28 const queue = [1, 2, 3];
29 let value;
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/while-with-assignment-in-test.js
+1
@@ -1,3 +1,4 @@
1 +// @enablePreserveExistingMemoizationGuarantees:false
2 function Component() {
3 const queue = [1, 2, 3];
4 let value = 0;