From 0191d16712a07b092e932a43e386abff9ca2d514 Mon Sep 17 00:00:00 2001 From: Sam Zhou Date: Thu, 1 Jun 2023 14:41:00 -0700 Subject: [PATCH] Fix bad utility type definitions (#37662) Reviewed By: panagosg7 Differential Revision: D46364595 fbshipit-source-id: 5dcd484cd292d5b83b0b114675ec3c8059aefe6b --- .../react-native-codegen/src/CodegenSchema.js | 42 ++++++++++--------- .../GeneratePropsJavaPojo/PojoCollector.js | 8 ++-- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/react-native-codegen/src/CodegenSchema.js b/packages/react-native-codegen/src/CodegenSchema.js index f05a4f2e749..1708e8939b4 100644 --- a/packages/react-native-codegen/src/CodegenSchema.js +++ b/packages/react-native-codegen/src/CodegenSchema.js @@ -134,6 +134,27 @@ export type EventTypeAnnotation = elementType: EventTypeAnnotation, }>; +export type ArrayTypeAnnotation = $ReadOnly<{ + type: 'ArrayTypeAnnotation', + elementType: + | BooleanTypeAnnotation + | StringTypeAnnotation + | DoubleTypeAnnotation + | FloatTypeAnnotation + | Int32TypeAnnotation + | $ReadOnly<{ + type: 'StringEnumTypeAnnotation', + default: string, + options: $ReadOnlyArray, + }> + | ObjectTypeAnnotation + | ReservedPropTypeAnnotation + | $ReadOnly<{ + type: 'ArrayTypeAnnotation', + elementType: ObjectTypeAnnotation, + }>, +}>; + export type PropTypeAnnotation = | $ReadOnly<{ type: 'BooleanTypeAnnotation', @@ -167,26 +188,7 @@ export type PropTypeAnnotation = }> | ReservedPropTypeAnnotation | ObjectTypeAnnotation - | $ReadOnly<{ - type: 'ArrayTypeAnnotation', - elementType: - | BooleanTypeAnnotation - | StringTypeAnnotation - | DoubleTypeAnnotation - | FloatTypeAnnotation - | Int32TypeAnnotation - | $ReadOnly<{ - type: 'StringEnumTypeAnnotation', - default: string, - options: $ReadOnlyArray, - }> - | ObjectTypeAnnotation - | ReservedPropTypeAnnotation - | $ReadOnly<{ - type: 'ArrayTypeAnnotation', - elementType: ObjectTypeAnnotation, - }>, - }> + | ArrayTypeAnnotation | MixedTypeAnnotation; export type ReservedPropTypeAnnotation = $ReadOnly<{ diff --git a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaPojo/PojoCollector.js b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaPojo/PojoCollector.js index 81829b99da8..7aaa6d297bf 100644 --- a/packages/react-native-codegen/src/generators/components/GeneratePropsJavaPojo/PojoCollector.js +++ b/packages/react-native-codegen/src/generators/components/GeneratePropsJavaPojo/PojoCollector.js @@ -21,6 +21,7 @@ import type { Int32TypeAnnotation, PropTypeAnnotation, MixedTypeAnnotation, + ArrayTypeAnnotation, } from '../../../CodegenSchema'; const {capitalize} = require('../../Utils'); @@ -110,11 +111,8 @@ class PojoCollector { } case 'ArrayTypeAnnotation': { const arrayTypeAnnotation = typeAnnotation; - // TODO: Flow assumes elementType can be any. Fix this. - const elementType: $PropertyType< - typeof arrayTypeAnnotation, - 'elementType', - > = arrayTypeAnnotation.elementType; + const elementType: $PropertyType = + arrayTypeAnnotation.elementType; const pojoElementType = (() => { switch (elementType.type) {