From dbc81cf634c60f367c90c884330b961b8c354710 Mon Sep 17 00:00:00 2001 From: Henry Su Date: Fri, 30 Oct 2026 17:02:30 -0500 Subject: [PATCH 1/2] Expect generated array-enum mask wrappers to zero-initialize their value Snapshot change only; fails until GeneratePropsH emits the initializer. --- .../components/__snapshots__/GeneratePropsH-test.js.snap | 2 +- .../components/__snapshots__/GeneratePropsH-test.js.snap | 2 +- .../__tests__/__snapshots__/GeneratePropsH-test.js.snap | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/react-native-codegen/e2e/deep_imports/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap b/packages/react-native-codegen/e2e/deep_imports/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap index 602e57d6327a..652ab56102b3 100644 --- a/packages/react-native-codegen/e2e/deep_imports/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap +++ b/packages/react-native-codegen/e2e/deep_imports/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap @@ -26,7 +26,7 @@ namespace facebook::react { using ArrayPropsNativeComponentViewSizesMask = uint32_t; struct ArrayPropsNativeComponentViewSizesMaskWrapped { - ArrayPropsNativeComponentViewSizesMask value; + ArrayPropsNativeComponentViewSizesMask value{}; }; enum class ArrayPropsNativeComponentViewSizes: ArrayPropsNativeComponentViewSizesMask { diff --git a/packages/react-native-codegen/e2e/namespaced/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap b/packages/react-native-codegen/e2e/namespaced/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap index 5739bd6533bc..531c41ed17c8 100644 --- a/packages/react-native-codegen/e2e/namespaced/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap +++ b/packages/react-native-codegen/e2e/namespaced/__tests__/components/__snapshots__/GeneratePropsH-test.js.snap @@ -26,7 +26,7 @@ namespace facebook::react { using ArrayPropsNativeComponentViewSizesMask = uint32_t; struct ArrayPropsNativeComponentViewSizesMaskWrapped { - ArrayPropsNativeComponentViewSizesMask value; + ArrayPropsNativeComponentViewSizesMask value{}; }; enum class ArrayPropsNativeComponentViewSizes: ArrayPropsNativeComponentViewSizesMask { diff --git a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap index 681b6f3fbf31..b07b35f48587 100644 --- a/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap +++ b/packages/react-native-codegen/src/generators/components/__tests__/__snapshots__/GeneratePropsH-test.js.snap @@ -1162,7 +1162,7 @@ namespace facebook::react { using ArrayPropsNativeComponentSizesMask = uint32_t; struct ArrayPropsNativeComponentSizesMaskWrapped { - ArrayPropsNativeComponentSizesMask value; + ArrayPropsNativeComponentSizesMask value{}; }; enum class ArrayPropsNativeComponentSizes: ArrayPropsNativeComponentSizesMask { @@ -1764,7 +1764,7 @@ namespace facebook::react { using ArrayPropsWithOptionalGenNativeComponentSizesMask = uint32_t; struct ArrayPropsWithOptionalGenNativeComponentSizesMaskWrapped { - ArrayPropsWithOptionalGenNativeComponentSizesMask value; + ArrayPropsWithOptionalGenNativeComponentSizesMask value{}; }; enum class ArrayPropsWithOptionalGenNativeComponentSizes: ArrayPropsWithOptionalGenNativeComponentSizesMask { @@ -2060,7 +2060,7 @@ namespace facebook::react { using ArrayPropsWithOptionalObjectGenNativeComponentSizesMask = uint32_t; struct ArrayPropsWithOptionalObjectGenNativeComponentSizesMaskWrapped { - ArrayPropsWithOptionalObjectGenNativeComponentSizesMask value; + ArrayPropsWithOptionalObjectGenNativeComponentSizesMask value{}; }; enum class ArrayPropsWithOptionalObjectGenNativeComponentSizes: ArrayPropsWithOptionalObjectGenNativeComponentSizesMask { From 9d847fc303b0af07d52a7109c5fa2e56c8feaed0 Mon Sep 17 00:00:00 2001 From: Henry Su Date: Fri, 30 Oct 2026 17:03:02 -0500 Subject: [PATCH 2/2] Zero-initialize generated array-enum mask wrappers convertRawProp default-constructs the prop type (T result;) and the generated fromRawValue ORs each listed value into wrapped.value, so the mask started from an indeterminate value and could keep stray bits, e.g. Modal supportedOrientations allowing orientations it does not list. --- .../src/generators/components/GeneratePropsH.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js index b7dc064fb203..a313428446c9 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsH.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsH.js @@ -272,7 +272,7 @@ const ArrayEnumTemplate = ({ using ${enumMask} = uint32_t; struct ${enumMask}Wrapped { - ${enumMask} value; + ${enumMask} value{}; }; enum class ${enumName}: ${enumMask} {