@samitouri / QOS-React / commits / bd788b4180

[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(() => {