react-native-code-gen Add Enum Type support for iOS/Android TurboModules

Summary:
Adding enum support to Android/iOS generated code

Changelog:
[General][Added] - react-native-code-gen Add Enum Type support for iOS/Android TurboModules

Reviewed By: javache

Differential Revision: D38967241

fbshipit-source-id: d8bb3019dab198e16905a6422e877cd751119122
This commit is contained in:
Christoph Purrer
2022-10-25 08:27:47 -07:00
committed by Facebook GitHub Bot
parent e9b89b5ff2
commit 745f3ee8c5
19 changed files with 347 additions and 7 deletions
@@ -138,6 +138,15 @@ function translateFunctionParamToJavaType(
return !isRequired ? 'Double' : 'double';
case 'BooleanTypeAnnotation':
return !isRequired ? 'Boolean' : 'boolean';
case 'EnumDeclaration':
switch (realTypeAnnotation.memberType) {
case 'NumberTypeAnnotation':
return !isRequired ? 'Double' : 'double';
case 'StringTypeAnnotation':
return wrapIntoNullableIfNeeded('String');
default:
throw new Error(createErrorMessage(realTypeAnnotation.type));
}
case 'ObjectTypeAnnotation':
imports.add('com.facebook.react.bridge.ReadableMap');
if (typeAnnotation.type === 'TypeAliasTypeAnnotation') {
@@ -213,6 +222,15 @@ function translateFunctionReturnTypeToJavaType(
return nullable ? 'Double' : 'double';
case 'BooleanTypeAnnotation':
return nullable ? 'Boolean' : 'boolean';
case 'EnumDeclaration':
switch (realTypeAnnotation.memberType) {
case 'NumberTypeAnnotation':
return nullable ? 'Double' : 'double';
case 'StringTypeAnnotation':
return wrapIntoNullableIfNeeded('String');
default:
throw new Error(createErrorMessage(realTypeAnnotation.type));
}
case 'ObjectTypeAnnotation':
imports.add('com.facebook.react.bridge.WritableMap');
return wrapIntoNullableIfNeeded('WritableMap');
@@ -269,6 +287,15 @@ function getFalsyReturnStatementFromReturnType(
return nullable ? 'return null;' : 'return 0;';
case 'BooleanTypeAnnotation':
return nullable ? 'return null;' : 'return false;';
case 'EnumDeclaration':
switch (realTypeAnnotation.memberType) {
case 'NumberTypeAnnotation':
return nullable ? 'return null;' : 'return 0;';
case 'StringTypeAnnotation':
return nullable ? 'return null;' : 'return "";';
default:
throw new Error(createErrorMessage(realTypeAnnotation.type));
}
case 'StringTypeAnnotation':
return nullable ? 'return null;' : 'return "";';
case 'ObjectTypeAnnotation':