mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Extract UnsupportedObjectPropertyValueTypeAnnotationParserError to a throwing function (#34917)
Summary: This PR is a part of https://github.com/facebook/react-native/issues/34872. Extracted the UnsupportedObjectPropertyValueTypeAnnotationParserError in its own throwing function and reuse that function passing a proper type. ## Changelog [Internal] [Changed] - Extract the UnsupportedObjectPropertyValueTypeAnnotationParserError in its own throwing function and reuse that function passing a proper type. Pull Request resolved: https://github.com/facebook/react-native/pull/34917 Test Plan: Output of yarn jest react-native-codegen. <img width="451" alt="Screenshot 2022-10-10 at 12 55 39 PM" src="https://user-images.githubusercontent.com/32268377/194816863-5220dbaa-3b63-42bf-8e62-9d7b915f7cbd.png"> Reviewed By: cortinico Differential Revision: D40424885 Pulled By: cipolleschi fbshipit-source-id: 08d4d13ee3959391261fe13c190a4bb893970757
This commit is contained in:
committed by
Facebook GitHub Bot
parent
aeab38357f
commit
aba6be694e
@@ -19,6 +19,7 @@ const {
|
||||
UnusedModuleInterfaceParserError,
|
||||
IncorrectModuleRegistryCallArityParserError,
|
||||
IncorrectModuleRegistryCallTypeParameterParserError,
|
||||
UnsupportedObjectPropertyValueTypeAnnotationParserError,
|
||||
UntypedModuleRegistryCallParserError,
|
||||
UnsupportedModulePropertyParserError,
|
||||
} = require('./errors.js');
|
||||
@@ -188,10 +189,36 @@ function throwIfModuleTypeIsUnsupported(
|
||||
}
|
||||
}
|
||||
|
||||
const UnsupportedObjectPropertyTypeToInvalidPropertyValueTypeMap = {
|
||||
FunctionTypeAnnotation: 'FunctionTypeAnnotation',
|
||||
VoidTypeAnnotation: 'void',
|
||||
PromiseTypeAnnotation: 'Promise',
|
||||
};
|
||||
|
||||
function throwIfPropertyValueTypeIsUnsupported(
|
||||
moduleName: string,
|
||||
propertyValue: $FlowFixMe,
|
||||
propertyKey: string,
|
||||
type: string,
|
||||
language: ParserType,
|
||||
) {
|
||||
const invalidPropertyValueType =
|
||||
UnsupportedObjectPropertyTypeToInvalidPropertyValueTypeMap[type];
|
||||
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
moduleName,
|
||||
propertyValue,
|
||||
propertyKey,
|
||||
invalidPropertyValueType,
|
||||
language,
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
throwIfModuleInterfaceIsMisnamed,
|
||||
throwIfModuleInterfaceNotFound,
|
||||
throwIfMoreThanOneModuleRegistryCalls,
|
||||
throwIfPropertyValueTypeIsUnsupported,
|
||||
throwIfUnusedModuleInterfaceParserError,
|
||||
throwIfWrongNumberOfCallExpressionArgs,
|
||||
throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
||||
|
||||
+16
-32
@@ -63,7 +63,6 @@ const {
|
||||
UnsupportedEnumDeclarationParserError,
|
||||
UnsupportedUnionTypeAnnotationParserError,
|
||||
UnsupportedObjectPropertyTypeAnnotationParserError,
|
||||
UnsupportedObjectPropertyValueTypeAnnotationParserError,
|
||||
IncorrectModuleRegistryCallArgumentTypeParserError,
|
||||
} = require('../../errors.js');
|
||||
const {verifyPlatforms} = require('../../utils');
|
||||
@@ -71,6 +70,7 @@ const {verifyPlatforms} = require('../../utils');
|
||||
const {
|
||||
throwIfModuleInterfaceNotFound,
|
||||
throwIfModuleInterfaceIsMisnamed,
|
||||
throwIfPropertyValueTypeIsUnsupported,
|
||||
throwIfUnusedModuleInterfaceParserError,
|
||||
throwIfWrongNumberOfCallExpressionArgs,
|
||||
throwIfIncorrectModuleRegistryCallTypeParameterParserError,
|
||||
@@ -309,44 +309,28 @@ function translateTypeAnnotation(
|
||||
),
|
||||
);
|
||||
|
||||
if (propertyTypeAnnotation.type === 'FunctionTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
if (
|
||||
propertyTypeAnnotation.type === 'FunctionTypeAnnotation' ||
|
||||
propertyTypeAnnotation.type === 'PromiseTypeAnnotation' ||
|
||||
propertyTypeAnnotation.type === 'VoidTypeAnnotation'
|
||||
) {
|
||||
throwIfPropertyValueTypeIsUnsupported(
|
||||
hasteModuleName,
|
||||
property.value,
|
||||
property.key,
|
||||
propertyTypeAnnotation.type,
|
||||
language,
|
||||
);
|
||||
} else {
|
||||
return {
|
||||
name: key.name,
|
||||
optional,
|
||||
typeAnnotation: wrapNullable(
|
||||
isPropertyNullable,
|
||||
propertyTypeAnnotation,
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
if (propertyTypeAnnotation.type === 'VoidTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
hasteModuleName,
|
||||
property.value,
|
||||
property.key,
|
||||
'void',
|
||||
language,
|
||||
);
|
||||
}
|
||||
|
||||
if (propertyTypeAnnotation.type === 'PromiseTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
hasteModuleName,
|
||||
property.value,
|
||||
property.key,
|
||||
'Promise',
|
||||
language,
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
name: key.name,
|
||||
optional,
|
||||
typeAnnotation: wrapNullable(
|
||||
isPropertyNullable,
|
||||
propertyTypeAnnotation,
|
||||
),
|
||||
};
|
||||
});
|
||||
},
|
||||
)
|
||||
|
||||
@@ -63,13 +63,13 @@ const {
|
||||
UnsupportedEnumDeclarationParserError,
|
||||
UnsupportedUnionTypeAnnotationParserError,
|
||||
UnsupportedObjectPropertyTypeAnnotationParserError,
|
||||
UnsupportedObjectPropertyValueTypeAnnotationParserError,
|
||||
IncorrectModuleRegistryCallArgumentTypeParserError,
|
||||
} = require('../../errors.js');
|
||||
const {verifyPlatforms} = require('../../utils');
|
||||
|
||||
const {
|
||||
throwIfUntypedModule,
|
||||
throwIfPropertyValueTypeIsUnsupported,
|
||||
throwIfModuleTypeIsUnsupported,
|
||||
throwIfUnusedModuleInterfaceParserError,
|
||||
throwIfModuleInterfaceNotFound,
|
||||
@@ -324,44 +324,28 @@ function translateTypeAnnotation(
|
||||
),
|
||||
);
|
||||
|
||||
if (propertyTypeAnnotation.type === 'FunctionTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
if (
|
||||
propertyTypeAnnotation.type === 'FunctionTypeAnnotation' ||
|
||||
propertyTypeAnnotation.type === 'PromiseTypeAnnotation' ||
|
||||
propertyTypeAnnotation.type === 'VoidTypeAnnotation'
|
||||
) {
|
||||
throwIfPropertyValueTypeIsUnsupported(
|
||||
hasteModuleName,
|
||||
property.typeAnnotation.typeAnnotation,
|
||||
property.key,
|
||||
propertyTypeAnnotation.type,
|
||||
language,
|
||||
);
|
||||
} else {
|
||||
return {
|
||||
name: key.name,
|
||||
optional,
|
||||
typeAnnotation: wrapNullable(
|
||||
isPropertyNullable,
|
||||
propertyTypeAnnotation,
|
||||
),
|
||||
};
|
||||
}
|
||||
|
||||
if (propertyTypeAnnotation.type === 'VoidTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
hasteModuleName,
|
||||
property.typeAnnotation.typeAnnotation,
|
||||
property.key,
|
||||
'void',
|
||||
language,
|
||||
);
|
||||
}
|
||||
|
||||
if (propertyTypeAnnotation.type === 'PromiseTypeAnnotation') {
|
||||
throw new UnsupportedObjectPropertyValueTypeAnnotationParserError(
|
||||
hasteModuleName,
|
||||
property.typeAnnotation.typeAnnotation,
|
||||
property.key,
|
||||
'Promise',
|
||||
language,
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
name: key.name,
|
||||
optional,
|
||||
typeAnnotation: wrapNullable(
|
||||
isPropertyNullable,
|
||||
propertyTypeAnnotation,
|
||||
),
|
||||
};
|
||||
});
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user