.map(fn)` might invoke `fn`, which means replaying its
+ * effects.
+ *
+ * (Note that Effect.Read / Effect.Capture on a function type means
+ * potential data dependency or aliasing respectively.)
+ */
positionalParams: [],
- restParam: Effect.Read,
+ restParam: Effect.ConditionallyMutate,
returnType: {kind: 'Object', shapeId: BuiltInArrayId},
calleeEffect: Effect.ConditionallyMutate,
returnValueKind: ValueKind.Mutable,
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.expect.md
new file mode 100644
index 0000000000000..4867388a864d2
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.expect.md
@@ -0,0 +1,156 @@
+
+## Input
+
+```javascript
+import {
+ arrayPush,
+ identity,
+ makeArray,
+ Stringify,
+ useFragment,
+} from 'shared-runtime';
+
+/**
+ * Bug repro showing why it's invalid for function references to be annotated
+ * with a `Read` effect when that reference might lead to the function being
+ * invoked.
+ *
+ * Note that currently, `Array.map` is annotated to have `Read` effects on its
+ * operands. This is incorrect as function effects must be replayed when `map`
+ * is called
+ * - Read: non-aliasing data dependency
+ * - Capture: maybe-aliasing data dependency
+ * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
+ * but only if the value is mutable
+ *
+ * Invalid evaluator result: Found differences in evaluator results Non-forget
+ * (expected): (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2],"count":4}
{"item":1}
+ * Forget:
+ * (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
+ */
+
+function Component({extraJsx}) {
+ const x = makeArray();
+ const items = useFragment();
+ // This closure has the following effects that must be replayed:
+ // - MaybeFreeze / Capture of `items`
+ // - ConditionalMutate of x
+ const jsx = items.a.map((item, i) => {
+ arrayPush(x, 2);
+ return ;
+ });
+ const offset = jsx.length;
+ for (let i = 0; i < extraJsx; i++) {
+ jsx.push();
+ }
+ const count = jsx.length;
+ identity(count);
+ return (
+ <>
+
+ {jsx[0]}
+ >
+ );
+}
+export const FIXTURE_ENTRYPOINT = {
+ fn: Component,
+ params: [{extraJsx: 0}],
+ sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
+};
+
+```
+
+## Code
+
+```javascript
+import { c as _c } from "react/compiler-runtime";
+import {
+ arrayPush,
+ identity,
+ makeArray,
+ Stringify,
+ useFragment,
+} from "shared-runtime";
+
+/**
+ * Bug repro showing why it's invalid for function references to be annotated
+ * with a `Read` effect when that reference might lead to the function being
+ * invoked.
+ *
+ * Note that currently, `Array.map` is annotated to have `Read` effects on its
+ * operands. This is incorrect as function effects must be replayed when `map`
+ * is called
+ * - Read: non-aliasing data dependency
+ * - Capture: maybe-aliasing data dependency
+ * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
+ * but only if the value is mutable
+ *
+ * Invalid evaluator result: Found differences in evaluator results Non-forget
+ * (expected): (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2],"count":4}
{"item":1}
+ * Forget:
+ * (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
+ */
+
+function Component(t0) {
+ const $ = _c(6);
+ const { extraJsx } = t0;
+ const x = makeArray();
+ const items = useFragment();
+
+ const jsx = items.a.map((item, i) => {
+ arrayPush(x, 2);
+ return ;
+ });
+ const offset = jsx.length;
+ for (let i_0 = 0; i_0 < extraJsx; i_0++) {
+ jsx.push();
+ }
+
+ const count = jsx.length;
+ identity(count);
+ let t1;
+ if ($[0] !== count || $[1] !== x) {
+ t1 = ;
+ $[0] = count;
+ $[1] = x;
+ $[2] = t1;
+ } else {
+ t1 = $[2];
+ }
+ const t2 = jsx[0];
+ let t3;
+ if ($[3] !== t1 || $[4] !== t2) {
+ t3 = (
+ <>
+ {t1}
+ {t2}
+ >
+ );
+ $[3] = t1;
+ $[4] = t2;
+ $[5] = t3;
+ } else {
+ t3 = $[5];
+ }
+ return t3;
+}
+
+export const FIXTURE_ENTRYPOINT = {
+ fn: Component,
+ params: [{ extraJsx: 0 }],
+ sequentialRenders: [{ extraJsx: 0 }, { extraJsx: 1 }],
+};
+
+```
+
+### Eval output
+(kind: ok) {"x":[2,2,2],"count":3}
{"item":1}
+{"x":[2,2,2],"count":4}
{"item":1}
\ No newline at end of file
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.js
new file mode 100644
index 0000000000000..858a4ab3dc693
--- /dev/null
+++ b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/mixedreadonly-mutating-map.js
@@ -0,0 +1,59 @@
+import {
+ arrayPush,
+ identity,
+ makeArray,
+ Stringify,
+ useFragment,
+} from 'shared-runtime';
+
+/**
+ * Bug repro showing why it's invalid for function references to be annotated
+ * with a `Read` effect when that reference might lead to the function being
+ * invoked.
+ *
+ * Note that currently, `Array.map` is annotated to have `Read` effects on its
+ * operands. This is incorrect as function effects must be replayed when `map`
+ * is called
+ * - Read: non-aliasing data dependency
+ * - Capture: maybe-aliasing data dependency
+ * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
+ * but only if the value is mutable
+ *
+ * Invalid evaluator result: Found differences in evaluator results Non-forget
+ * (expected): (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2],"count":4}
{"item":1}
+ * Forget:
+ * (kind: ok)
+ * {"x":[2,2,2],"count":3}
{"item":1}
+ * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
+ */
+
+function Component({extraJsx}) {
+ const x = makeArray();
+ const items = useFragment();
+ // This closure has the following effects that must be replayed:
+ // - MaybeFreeze / Capture of `items`
+ // - ConditionalMutate of x
+ const jsx = items.a.map((item, i) => {
+ arrayPush(x, 2);
+ return ;
+ });
+ const offset = jsx.length;
+ for (let i = 0; i < extraJsx; i++) {
+ jsx.push();
+ }
+ const count = jsx.length;
+ identity(count);
+ return (
+ <>
+
+ {jsx[0]}
+ >
+ );
+}
+export const FIXTURE_ENTRYPOINT = {
+ fn: Component,
+ params: [{extraJsx: 0}],
+ sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
+};
From a0b91fbd650f9398cca12fcda0c426c434eeb6d8 Mon Sep 17 00:00:00 2001
From: mofeiZ <34200447+mofeiZ@users.noreply.github.com>
Date: Wed, 22 Jan 2025 16:21:53 -0500
Subject: [PATCH 6/7] [compiler][ez] Fix main (bad rebase / amend for #32095)
(#32160)
See title: this fixes test cases broken by
https://github.com/facebook/react/pull/32095 adding instead of moving
new test fixtures
---
.../src/HIR/ObjectShape.ts | 4 +-
...-invalid-mixedreadonly-map-shape.expect.md | 163 ------------------
.../bug-invalid-mixedreadonly-map-shape.js | 56 ------
3 files changed, 2 insertions(+), 221 deletions(-)
delete mode 100644 compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.expect.md
delete mode 100644 compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/HIR/ObjectShape.ts b/compiler/packages/babel-plugin-react-compiler/src/HIR/ObjectShape.ts
index f396ae18b0461..f51768c586b72 100644
--- a/compiler/packages/babel-plugin-react-compiler/src/HIR/ObjectShape.ts
+++ b/compiler/packages/babel-plugin-react-compiler/src/HIR/ObjectShape.ts
@@ -569,7 +569,7 @@ addObject(BUILTIN_SHAPES, BuiltInMixedReadonlyId, [
'flatMap',
addFunction(BUILTIN_SHAPES, [], {
positionalParams: [],
- restParam: Effect.Read,
+ restParam: Effect.ConditionallyMutate,
returnType: {kind: 'Object', shapeId: BuiltInArrayId},
calleeEffect: Effect.ConditionallyMutate,
returnValueKind: ValueKind.Mutable,
@@ -580,7 +580,7 @@ addObject(BUILTIN_SHAPES, BuiltInMixedReadonlyId, [
'filter',
addFunction(BUILTIN_SHAPES, [], {
positionalParams: [],
- restParam: Effect.Read,
+ restParam: Effect.ConditionallyMutate,
returnType: {kind: 'Object', shapeId: BuiltInArrayId},
calleeEffect: Effect.ConditionallyMutate,
returnValueKind: ValueKind.Mutable,
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.expect.md
deleted file mode 100644
index 1418062c33458..0000000000000
--- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.expect.md
+++ /dev/null
@@ -1,163 +0,0 @@
-
-## Input
-
-```javascript
-import {
- arrayPush,
- identity,
- makeArray,
- Stringify,
- useFragment,
-} from 'shared-runtime';
-
-/**
- * Bug repro showing why it's invalid for function references to be annotated
- * with a `Read` effect when that reference might lead to the function being
- * invoked.
- *
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
- * operands. This is incorrect as function effects must be replayed when `map`
- * is called
- * - Read: non-aliasing data dependency
- * - Capture: maybe-aliasing data dependency
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
- * but only if the value is mutable
- *
- * Invalid evaluator result: Found differences in evaluator results Non-forget
- * (expected): (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2],"count":4}
{"item":1}
- * Forget:
- * (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
- */
-
-function Component({extraJsx}) {
- const x = makeArray();
- const items = useFragment();
- const jsx = items.a.map((item, i) => {
- arrayPush(x, 2);
- return ;
- });
- const offset = jsx.length;
- for (let i = 0; i < extraJsx; i++) {
- jsx.push();
- }
- const count = jsx.length;
- identity(count);
- return (
- <>
-
- {jsx[0]}
- >
- );
-}
-export const FIXTURE_ENTRYPOINT = {
- fn: Component,
- params: [{extraJsx: 0}],
- sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
-};
-
-```
-
-## Code
-
-```javascript
-import { c as _c } from "react/compiler-runtime";
-import {
- arrayPush,
- identity,
- makeArray,
- Stringify,
- useFragment,
-} from "shared-runtime";
-
-/**
- * Bug repro showing why it's invalid for function references to be annotated
- * with a `Read` effect when that reference might lead to the function being
- * invoked.
- *
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
- * operands. This is incorrect as function effects must be replayed when `map`
- * is called
- * - Read: non-aliasing data dependency
- * - Capture: maybe-aliasing data dependency
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
- * but only if the value is mutable
- *
- * Invalid evaluator result: Found differences in evaluator results Non-forget
- * (expected): (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2],"count":4}
{"item":1}
- * Forget:
- * (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
- */
-
-function Component(t0) {
- const $ = _c(9);
- const { extraJsx } = t0;
- let t1;
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
- t1 = makeArray();
- $[0] = t1;
- } else {
- t1 = $[0];
- }
- const x = t1;
- const items = useFragment();
- let jsx;
- if ($[1] !== extraJsx || $[2] !== items.a) {
- jsx = items.a.map((item, i) => {
- arrayPush(x, 2);
- return ;
- });
- const offset = jsx.length;
- for (let i_0 = 0; i_0 < extraJsx; i_0++) {
- jsx.push();
- }
- $[1] = extraJsx;
- $[2] = items.a;
- $[3] = jsx;
- } else {
- jsx = $[3];
- }
-
- const count = jsx.length;
- identity(count);
- let t2;
- if ($[4] !== count) {
- t2 = ;
- $[4] = count;
- $[5] = t2;
- } else {
- t2 = $[5];
- }
- const t3 = jsx[0];
- let t4;
- if ($[6] !== t2 || $[7] !== t3) {
- t4 = (
- <>
- {t2}
- {t3}
- >
- );
- $[6] = t2;
- $[7] = t3;
- $[8] = t4;
- } else {
- t4 = $[8];
- }
- return t4;
-}
-
-export const FIXTURE_ENTRYPOINT = {
- fn: Component,
- params: [{ extraJsx: 0 }],
- sequentialRenders: [{ extraJsx: 0 }, { extraJsx: 1 }],
-};
-
-```
-
\ No newline at end of file
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.js
deleted file mode 100644
index d038cf6cd38a1..0000000000000
--- a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.js
+++ /dev/null
@@ -1,56 +0,0 @@
-import {
- arrayPush,
- identity,
- makeArray,
- Stringify,
- useFragment,
-} from 'shared-runtime';
-
-/**
- * Bug repro showing why it's invalid for function references to be annotated
- * with a `Read` effect when that reference might lead to the function being
- * invoked.
- *
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
- * operands. This is incorrect as function effects must be replayed when `map`
- * is called
- * - Read: non-aliasing data dependency
- * - Capture: maybe-aliasing data dependency
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
- * but only if the value is mutable
- *
- * Invalid evaluator result: Found differences in evaluator results Non-forget
- * (expected): (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2],"count":4}
{"item":1}
- * Forget:
- * (kind: ok)
- * {"x":[2,2,2],"count":3}
{"item":1}
- * {"x":[2,2,2,2,2,2],"count":4}
{"item":1}
- */
-
-function Component({extraJsx}) {
- const x = makeArray();
- const items = useFragment();
- const jsx = items.a.map((item, i) => {
- arrayPush(x, 2);
- return ;
- });
- const offset = jsx.length;
- for (let i = 0; i < extraJsx; i++) {
- jsx.push();
- }
- const count = jsx.length;
- identity(count);
- return (
- <>
-
- {jsx[0]}
- >
- );
-}
-export const FIXTURE_ENTRYPOINT = {
- fn: Component,
- params: [{extraJsx: 0}],
- sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
-};
From ae9017ceabb2a36a04c249ad5342e0b1af3e1a54 Mon Sep 17 00:00:00 2001
From: Jordan Brown
Date: Wed, 22 Jan 2025 17:09:41 -0500
Subject: [PATCH 7/7] Move effect dep inference tests to
infer-effect-dependencies directory (#32161)
Summary: Grouping them to make it easy to see that they are all related
Test Plan:
---
.../infer-deps-custom-config.expect.md | 0
.../{ => infer-effect-dependencies}/infer-deps-custom-config.js | 0
.../infer-effect-dependencies.expect.md | 0
.../{ => infer-effect-dependencies}/infer-effect-dependencies.js | 0
.../{ => infer-effect-dependencies}/nonreactive-dep.expect.md | 0
.../compiler/{ => infer-effect-dependencies}/nonreactive-dep.js | 0
.../nonreactive-ref-helper.expect.md | 0
.../{ => infer-effect-dependencies}/nonreactive-ref-helper.js | 0
.../{ => infer-effect-dependencies}/nonreactive-ref.expect.md | 0
.../compiler/{ => infer-effect-dependencies}/nonreactive-ref.js | 0
.../{ => infer-effect-dependencies}/outlined-function.expect.md | 0
.../compiler/{ => infer-effect-dependencies}/outlined-function.js | 0
.../pruned-nonreactive-obj.expect.md | 0
.../{ => infer-effect-dependencies}/pruned-nonreactive-obj.js | 0
.../reactive-memberexpr-merge.expect.md | 0
.../{ => infer-effect-dependencies}/reactive-memberexpr-merge.js | 0
.../{ => infer-effect-dependencies}/reactive-memberexpr.expect.md | 0
.../{ => infer-effect-dependencies}/reactive-memberexpr.js | 0
.../reactive-optional-chain.expect.md | 0
.../{ => infer-effect-dependencies}/reactive-optional-chain.js | 0
.../{ => infer-effect-dependencies}/reactive-variable.expect.md | 0
.../compiler/{ => infer-effect-dependencies}/reactive-variable.js | 0
.../todo-import-namespace-useEffect.expect.md | 0
.../todo-import-namespace-useEffect.js | 0
24 files changed, 0 insertions(+), 0 deletions(-)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/infer-deps-custom-config.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/infer-deps-custom-config.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/infer-effect-dependencies.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/infer-effect-dependencies.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-dep.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-dep.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-ref-helper.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-ref-helper.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-ref.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/nonreactive-ref.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/outlined-function.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/outlined-function.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/pruned-nonreactive-obj.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/pruned-nonreactive-obj.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-memberexpr-merge.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-memberexpr-merge.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-memberexpr.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-memberexpr.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-optional-chain.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-optional-chain.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-variable.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/reactive-variable.js (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/todo-import-namespace-useEffect.expect.md (100%)
rename compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/{ => infer-effect-dependencies}/todo-import-namespace-useEffect.js (100%)
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-deps-custom-config.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-deps-custom-config.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-deps-custom-config.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-deps-custom-config.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-deps-custom-config.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-deps-custom-config.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-deps-custom-config.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-deps-custom-config.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-effect-dependencies.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-effect-dependencies.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-effect-dependencies.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/infer-effect-dependencies.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-dep.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-dep.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-dep.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-dep.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-dep.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-dep.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-dep.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-dep.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref-helper.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref-helper.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref-helper.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref-helper.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref-helper.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref-helper.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref-helper.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref-helper.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/nonreactive-ref.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/nonreactive-ref.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/outlined-function.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/outlined-function.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/outlined-function.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/outlined-function.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/outlined-function.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/outlined-function.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/outlined-function.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/outlined-function.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/pruned-nonreactive-obj.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/pruned-nonreactive-obj.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/pruned-nonreactive-obj.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/pruned-nonreactive-obj.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/pruned-nonreactive-obj.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/pruned-nonreactive-obj.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/pruned-nonreactive-obj.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/pruned-nonreactive-obj.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr-merge.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr-merge.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr-merge.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr-merge.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr-merge.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr-merge.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr-merge.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr-merge.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-memberexpr.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-memberexpr.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-optional-chain.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-optional-chain.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-optional-chain.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-optional-chain.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-optional-chain.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-optional-chain.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-optional-chain.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-optional-chain.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-variable.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-variable.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-variable.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-variable.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-variable.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-variable.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/reactive-variable.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/reactive-variable.js
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/todo-import-namespace-useEffect.expect.md b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/todo-import-namespace-useEffect.expect.md
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/todo-import-namespace-useEffect.expect.md
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/todo-import-namespace-useEffect.expect.md
diff --git a/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/todo-import-namespace-useEffect.js b/compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/todo-import-namespace-useEffect.js
similarity index 100%
rename from compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/todo-import-namespace-useEffect.js
rename to compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/infer-effect-dependencies/todo-import-namespace-useEffect.js