mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Use enum classes in C++ Turbo Modules (#41923)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/41923 Changelog: [Internal][BREAKING] Use C++ enum classes in C++ Turbo Modules Problem: Using **C styles** `enums` can easily cause compiliation errors if symbol names collide. This code does not compile: ``` enum CustomEnumInt { A = 23, B = 42 }; static int A = 22; ``` This **C++ code**, using `enum classes` compiles: ``` enum class CustomEnumInt : int32_t { A = 23, B = 42 }; static int A = 22; ``` Reviewed By: rshest Differential Revision: D52098598 fbshipit-source-id: c919bd2e41970c83a032fec91b0537cd6fae8397
This commit is contained in:
committed by
Facebook GitHub Bot
parent
1e22fa39ea
commit
8183afeb81
@@ -180,11 +180,7 @@ function translatePrimitiveJSTypeToCpp(
|
||||
case 'EnumDeclaration':
|
||||
switch (realTypeAnnotation.memberType) {
|
||||
case 'NumberTypeAnnotation':
|
||||
return getAreEnumMembersInteger(
|
||||
enumMap[realTypeAnnotation.name].members,
|
||||
)
|
||||
? wrap('int')
|
||||
: wrap('double');
|
||||
return wrap('jsi::Value');
|
||||
case 'StringTypeAnnotation':
|
||||
return wrap('jsi::String');
|
||||
default:
|
||||
@@ -466,7 +462,7 @@ const EnumTemplate = ({
|
||||
return `
|
||||
#pragma mark - ${enumName}
|
||||
|
||||
enum ${enumName} { ${values} };
|
||||
enum class ${enumName} { ${values} };
|
||||
|
||||
template <>
|
||||
struct Bridging<${enumName}> {
|
||||
|
||||
Reference in New Issue
Block a user