[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
mofeiZ committed
Jan 22, 2025 at 16:21 UTC
a0b91fbd650f9398cca12fcda0c426c434eeb6d8
3 files changed
+2
-221
compiler/packages/babel-plugin-react-compiler/src/HIR/ObjectShape.ts
+2
-2
@@ -569,7 +569,7 @@ addObject(BUILTIN_SHAPES, BuiltInMixedReadonlyId, [
569
'flatMap',
570
addFunction(BUILTIN_SHAPES, [], {
571
positionalParams: [],
572
- restParam: Effect.Read,
572
+ restParam: Effect.ConditionallyMutate,
573
returnType: {kind: 'Object', shapeId: BuiltInArrayId},
574
calleeEffect: Effect.ConditionallyMutate,
575
returnValueKind: ValueKind.Mutable,
@@ -580,7 +580,7 @@ addObject(BUILTIN_SHAPES, BuiltInMixedReadonlyId, [
580
'filter',
581
addFunction(BUILTIN_SHAPES, [], {
582
positionalParams: [],
583
- restParam: Effect.Read,
583
+ restParam: Effect.ConditionallyMutate,
584
returnType: {kind: 'Object', shapeId: BuiltInArrayId},
585
calleeEffect: Effect.ConditionallyMutate,
586
returnValueKind: ValueKind.Mutable,
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.expect.md
deleted
-163
@@ -1,163 +0,0 @@
1
-
2
-## Input
3
-
4
-```javascript
5
-import {
6
- arrayPush,
7
- identity,
8
- makeArray,
9
- Stringify,
10
- useFragment,
11
-} from 'shared-runtime';
12
-
13
-/**
14
- * Bug repro showing why it's invalid for function references to be annotated
15
- * with a `Read` effect when that reference might lead to the function being
16
- * invoked.
17
- *
18
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
19
- * operands. This is incorrect as function effects must be replayed when `map`
20
- * is called
21
- * - Read: non-aliasing data dependency
22
- * - Capture: maybe-aliasing data dependency
23
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
24
- * but only if the value is mutable
25
- *
26
- * Invalid evaluator result: Found differences in evaluator results Non-forget
27
- * (expected): (kind: ok)
28
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
29
- * <div>{"x":[2,2,2],"count":4}</div><div>{"item":1}</div>
30
- * Forget:
31
- * (kind: ok)
32
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
33
- * <div>{"x":[2,2,2,2,2,2],"count":4}</div><div>{"item":1}</div>
34
- */
35
-
36
-function Component({extraJsx}) {
37
- const x = makeArray();
38
- const items = useFragment();
39
- const jsx = items.a.map((item, i) => {
40
- arrayPush(x, 2);
41
- return <Stringify item={item} key={i} />;
42
- });
43
- const offset = jsx.length;
44
- for (let i = 0; i < extraJsx; i++) {
45
- jsx.push(<Stringify item={0} key={i + offset} />);
46
- }
47
- const count = jsx.length;
48
- identity(count);
49
- return (
50
- <>
51
- <Stringify x={x} count={count} />
52
- {jsx[0]}
53
- </>
54
- );
55
-}
56
-export const FIXTURE_ENTRYPOINT = {
57
- fn: Component,
58
- params: [{extraJsx: 0}],
59
- sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
60
-};
61
-
62
-```
63
-
64
-## Code
65
-
66
-```javascript
67
-import { c as _c } from "react/compiler-runtime";
68
-import {
69
- arrayPush,
70
- identity,
71
- makeArray,
72
- Stringify,
73
- useFragment,
74
-} from "shared-runtime";
75
-
76
-/**
77
- * Bug repro showing why it's invalid for function references to be annotated
78
- * with a `Read` effect when that reference might lead to the function being
79
- * invoked.
80
- *
81
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
82
- * operands. This is incorrect as function effects must be replayed when `map`
83
- * is called
84
- * - Read: non-aliasing data dependency
85
- * - Capture: maybe-aliasing data dependency
86
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
87
- * but only if the value is mutable
88
- *
89
- * Invalid evaluator result: Found differences in evaluator results Non-forget
90
- * (expected): (kind: ok)
91
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
92
- * <div>{"x":[2,2,2],"count":4}</div><div>{"item":1}</div>
93
- * Forget:
94
- * (kind: ok)
95
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
96
- * <div>{"x":[2,2,2,2,2,2],"count":4}</div><div>{"item":1}</div>
97
- */
98
-
99
-function Component(t0) {
100
- const $ = _c(9);
101
- const { extraJsx } = t0;
102
- let t1;
103
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
104
- t1 = makeArray();
105
- $[0] = t1;
106
- } else {
107
- t1 = $[0];
108
- }
109
- const x = t1;
110
- const items = useFragment();
111
- let jsx;
112
- if ($[1] !== extraJsx || $[2] !== items.a) {
113
- jsx = items.a.map((item, i) => {
114
- arrayPush(x, 2);
115
- return <Stringify item={item} key={i} />;
116
- });
117
- const offset = jsx.length;
118
- for (let i_0 = 0; i_0 < extraJsx; i_0++) {
119
- jsx.push(<Stringify item={0} key={i_0 + offset} />);
120
- }
121
- $[1] = extraJsx;
122
- $[2] = items.a;
123
- $[3] = jsx;
124
- } else {
125
- jsx = $[3];
126
- }
127
-
128
- const count = jsx.length;
129
- identity(count);
130
- let t2;
131
- if ($[4] !== count) {
132
- t2 = <Stringify x={x} count={count} />;
133
- $[4] = count;
134
- $[5] = t2;
135
- } else {
136
- t2 = $[5];
137
- }
138
- const t3 = jsx[0];
139
- let t4;
140
- if ($[6] !== t2 || $[7] !== t3) {
141
- t4 = (
142
- <>
143
- {t2}
144
- {t3}
145
- </>
146
- );
147
- $[6] = t2;
148
- $[7] = t3;
149
- $[8] = t4;
150
- } else {
151
- t4 = $[8];
152
- }
153
- return t4;
154
-}
155
-
156
-export const FIXTURE_ENTRYPOINT = {
157
- fn: Component,
158
- params: [{ extraJsx: 0 }],
159
- sequentialRenders: [{ extraJsx: 0 }, { extraJsx: 1 }],
160
-};
161
-
162
-```
163
-
\ No newline at end of file
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/bug-invalid-mixedreadonly-map-shape.js
deleted
-56
@@ -1,56 +0,0 @@
1
-import {
2
- arrayPush,
3
- identity,
4
- makeArray,
5
- Stringify,
6
- useFragment,
7
-} from 'shared-runtime';
8
-
9
-/**
10
- * Bug repro showing why it's invalid for function references to be annotated
11
- * with a `Read` effect when that reference might lead to the function being
12
- * invoked.
13
- *
14
- * Note that currently, `Array.map` is annotated to have `Read` effects on its
15
- * operands. This is incorrect as function effects must be replayed when `map`
16
- * is called
17
- * - Read: non-aliasing data dependency
18
- * - Capture: maybe-aliasing data dependency
19
- * - ConditionallyMutate: maybe-aliasing data dependency; maybe-write / invoke
20
- * but only if the value is mutable
21
- *
22
- * Invalid evaluator result: Found differences in evaluator results Non-forget
23
- * (expected): (kind: ok)
24
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
25
- * <div>{"x":[2,2,2],"count":4}</div><div>{"item":1}</div>
26
- * Forget:
27
- * (kind: ok)
28
- * <div>{"x":[2,2,2],"count":3}</div><div>{"item":1}</div>
29
- * <div>{"x":[2,2,2,2,2,2],"count":4}</div><div>{"item":1}</div>
30
- */
31
-
32
-function Component({extraJsx}) {
33
- const x = makeArray();
34
- const items = useFragment();
35
- const jsx = items.a.map((item, i) => {
36
- arrayPush(x, 2);
37
- return <Stringify item={item} key={i} />;
38
- });
39
- const offset = jsx.length;
40
- for (let i = 0; i < extraJsx; i++) {
41
- jsx.push(<Stringify item={0} key={i + offset} />);
42
- }
43
- const count = jsx.length;
44
- identity(count);
45
- return (
46
- <>
47
- <Stringify x={x} count={count} />
48
- {jsx[0]}
49
- </>
50
- );
51
-}
52
-export const FIXTURE_ENTRYPOINT = {
53
- fn: Component,
54
- params: [{extraJsx: 0}],
55
- sequentialRenders: [{extraJsx: 0}, {extraJsx: 1}],
56
-};