[compiler] Add enablePropagateDepsInHIR flag
Adding new feature flag in preparation for #30894 ghstack-source-id: 59278028cf178d6b2c28732ded751e9c838183d2 Pull Request resolved: https://github.com/facebook/react/pull/30893
Mofei Zhang committed
Sep 5, 2024 at 20:14 UTC
bd788b4180e4ad201100b9defb849cb8f1483f9c
13 files changed
+20
-18
compiler/packages/babel-plugin-react-compiler/src/HIR/Environment.ts
+2
@@ -222,6 +222,8 @@ const EnvironmentConfigSchema = z.object({
222
*/
223
enableUseTypeAnnotations: z.boolean().default(false),
224
225
+ enablePropagateDepsInHIR: z.boolean().default(true),
226
+
227
/**
228
* Enables inference of optional dependency chains. Without this flag
229
* a property chain such as `props?.items?.foo` will infer as a dep on
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-as-memo-dep.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
function Component(props) {
7
const data = useMemo(() => {
8
return props?.items.edges?.nodes.map();
@@ -15,7 +15,7 @@ function Component(props) {
15
## Code
16
17
```javascript
18
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
18
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
19
function Component(props) {
20
const $ = _c(4);
21
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-as-memo-dep.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
function Component(props) {
3
const data = useMemo(() => {
4
return props?.items.edges?.nodes.map();
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-inverted-optionals-parallel-paths.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
import {ValidateMemoization} from 'shared-runtime';
7
function Component(props) {
8
const data = useMemo(() => {
@@ -19,7 +19,7 @@ function Component(props) {
19
## Code
20
21
```javascript
22
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
22
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
23
import { ValidateMemoization } from "shared-runtime";
24
function Component(props) {
25
const $ = _c(2);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-inverted-optionals-parallel-paths.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
import {ValidateMemoization} from 'shared-runtime';
3
function Component(props) {
4
const data = useMemo(() => {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-single-with-unconditional.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
import {ValidateMemoization} from 'shared-runtime';
7
function Component(props) {
8
const data = useMemo(() => {
@@ -19,7 +19,7 @@ function Component(props) {
19
## Code
20
21
```javascript
22
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
22
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
23
import { ValidateMemoization } from "shared-runtime";
24
function Component(props) {
25
const $ = _c(7);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-single-with-unconditional.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
import {ValidateMemoization} from 'shared-runtime';
3
function Component(props) {
4
const data = useMemo(() => {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-single.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
import {ValidateMemoization} from 'shared-runtime';
7
function Component(props) {
8
const data = useMemo(() => {
@@ -18,7 +18,7 @@ function Component(props) {
18
## Code
19
20
```javascript
21
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
21
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
22
import { ValidateMemoization } from "shared-runtime";
23
function Component(props) {
24
const $ = _c(7);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-single.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
import {ValidateMemoization} from 'shared-runtime';
3
function Component(props) {
4
const data = useMemo(() => {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-with-conditional-optional.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
import {ValidateMemoization} from 'shared-runtime';
7
function Component(props) {
8
const data = useMemo(() => {
@@ -23,7 +23,7 @@ function Component(props) {
23
## Code
24
25
```javascript
26
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
26
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
27
import { ValidateMemoization } from "shared-runtime";
28
function Component(props) {
29
const $ = _c(9);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-with-conditional-optional.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
import {ValidateMemoization} from 'shared-runtime';
3
function Component(props) {
4
const data = useMemo(() => {
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-with-conditional.expect.md
+2
-2
@@ -2,7 +2,7 @@
2
## Input
3
4
```javascript
5
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
5
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
6
import {ValidateMemoization} from 'shared-runtime';
7
function Component(props) {
8
const data = useMemo(() => {
@@ -23,7 +23,7 @@ function Component(props) {
23
## Code
24
25
```javascript
26
-import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
26
+import { c as _c } from "react/compiler-runtime"; // @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
27
import { ValidateMemoization } from "shared-runtime";
28
function Component(props) {
29
const $ = _c(9);
compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/optional-member-expression-with-conditional.js
+1
-1
@@ -1,4 +1,4 @@
1
-// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies
1
+// @validatePreserveExistingMemoizationGuarantees @enableOptionalDependencies @enablePropagateDepsInHIR:false
2
import {ValidateMemoization} from 'shared-runtime';
3
function Component(props) {
4
const data = useMemo(() => {