Skip to content

Commit b7fc586

Browse files
Use hasteModuleName for C++ Turbo Module enums (#44631)
Summary: Pull Request resolved: #44631 Changelog: [General][Breaking] Use hasteModuleName for C++ Turbo Module enums This is a follow up to #44630 This changes the names of C++ Turbo Modules enums to use the `hasteModuleName`. Example: `NativeMyAbcModule.js` with this spec: ``` export enum EnumNone { NA, NB, } export interface Spec extends TurboModule { +getStrEnum: (arg: EnumNone) => EnumStr;t } export default (TurboModuleRegistry.get<Spec>('MyAbcModuleCxx'): ?Spec); ``` Before now we generated a base C++ struct with the name: ``` MyAbcModuleCxxEnumNone ^^^ ``` Now the generate name is: ``` NativeMyAbcModuleEnumNone ^^^^^^ ``` ## Changes: - No `Cxx` injected anymore - Ensure base struct is `Native` prefixed (all RN JS TM specs start with it) Reviewed By: cipolleschi Differential Revision: D57602082 fbshipit-source-id: 9ebd68b8059dfbc6e2ec11065915cf049aa3cb0b
1 parent b98c5b9 commit b7fc586

File tree

4 files changed

+89
-84
lines changed

4 files changed

+89
-84
lines changed

packages/react-native-codegen/src/generators/modules/GenerateModuleH.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -390,12 +390,12 @@ struct Bridging<${enumName}> {
390390
};
391391

392392
function generateEnum(
393-
moduleName: string,
393+
hasteModuleName: string,
394394
origEnumName: string,
395395
members: NativeModuleEnumMembers,
396396
memberType: NativeModuleEnumMemberType,
397397
): string {
398-
const enumName = getEnumName(moduleName, origEnumName);
398+
const enumName = getEnumName(hasteModuleName, origEnumName);
399399

400400
const nativeEnumMemberType: NativeEnumMemberValueType =
401401
memberType === 'StringTypeAnnotation' ? 'std::string' : 'int32_t';
@@ -437,14 +437,14 @@ function generateEnum(
437437
}
438438

439439
function createEnums(
440-
moduleName: string,
440+
hasteModuleName: string,
441441
enumMap: NativeModuleEnumMap,
442442
resolveAlias: AliasResolver,
443443
): string {
444444
return Object.entries(enumMap)
445445
.map(([enumName, enumNode]) => {
446446
return generateEnum(
447-
moduleName,
447+
hasteModuleName,
448448
enumName,
449449
enumNode.members,
450450
enumNode.memberType,
@@ -455,7 +455,7 @@ function createEnums(
455455
}
456456

457457
function translatePropertyToCpp(
458-
moduleName: string,
458+
hasteModuleName: string,
459459
prop: NativeModulePropertyShape,
460460
resolveAlias: AliasResolver,
461461
enumMap: NativeModuleEnumMap,
@@ -470,7 +470,7 @@ function translatePropertyToCpp(
470470

471471
const paramTypes = propTypeAnnotation.params.map(param => {
472472
const translatedParam = translatePrimitiveJSTypeToCpp(
473-
moduleName,
473+
hasteModuleName,
474474
null,
475475
param.typeAnnotation,
476476
param.optional,
@@ -483,7 +483,7 @@ function translatePropertyToCpp(
483483
});
484484

485485
const returnType = translatePrimitiveJSTypeToCpp(
486-
moduleName,
486+
hasteModuleName,
487487
null,
488488
propTypeAnnotation.returnTypeAnnotation,
489489
false,
@@ -535,14 +535,14 @@ module.exports = {
535535
resolveAlias,
536536
enumMap,
537537
);
538-
const enums = createEnums(moduleName, enumMap, resolveAlias);
538+
const enums = createEnums(hasteModuleName, enumMap, resolveAlias);
539539

540540
return [
541541
ModuleClassDeclarationTemplate({
542542
hasteModuleName,
543543
moduleProperties: properties.map(prop =>
544544
translatePropertyToCpp(
545-
moduleName,
545+
hasteModuleName,
546546
prop,
547547
resolveAlias,
548548
enumMap,
@@ -556,7 +556,12 @@ module.exports = {
556556
hasteModuleName,
557557
moduleName,
558558
moduleProperties: properties.map(prop =>
559-
translatePropertyToCpp(moduleName, prop, resolveAlias, enumMap),
559+
translatePropertyToCpp(
560+
hasteModuleName,
561+
prop,
562+
resolveAlias,
563+
enumMap,
564+
),
560565
),
561566
}),
562567
];

packages/react-native-codegen/src/generators/modules/__tests__/__snapshots__/GenerateModuleH-test.js.snap

Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -204,111 +204,111 @@ Map {
204204
namespace facebook::react {
205205

206206

207-
#pragma mark - SampleTurboModuleCxxEnumInt
207+
#pragma mark - NativeSampleTurboModuleEnumInt
208208

209-
enum class SampleTurboModuleCxxEnumInt { IA, IB };
209+
enum class NativeSampleTurboModuleEnumInt { IA, IB };
210210

211211
template <>
212-
struct Bridging<SampleTurboModuleCxxEnumInt> {
213-
static SampleTurboModuleCxxEnumInt fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
212+
struct Bridging<NativeSampleTurboModuleEnumInt> {
213+
static NativeSampleTurboModuleEnumInt fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
214214
double value = (double)rawValue.asNumber();
215215
if (value == 23) {
216-
return SampleTurboModuleCxxEnumInt::IA;
216+
return NativeSampleTurboModuleEnumInt::IA;
217217
} else if (value == 42) {
218-
return SampleTurboModuleCxxEnumInt::IB;
218+
return NativeSampleTurboModuleEnumInt::IB;
219219
} else {
220220
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
221221
}
222222
}
223223

224-
static jsi::Value toJs(jsi::Runtime &rt, SampleTurboModuleCxxEnumInt value) {
225-
if (value == SampleTurboModuleCxxEnumInt::IA) {
224+
static jsi::Value toJs(jsi::Runtime &rt, NativeSampleTurboModuleEnumInt value) {
225+
if (value == NativeSampleTurboModuleEnumInt::IA) {
226226
return bridging::toJs(rt, 23);
227-
} else if (value == SampleTurboModuleCxxEnumInt::IB) {
227+
} else if (value == NativeSampleTurboModuleEnumInt::IB) {
228228
return bridging::toJs(rt, 42);
229229
} else {
230230
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
231231
}
232232
}
233233
};
234234

235-
#pragma mark - SampleTurboModuleCxxEnumFloat
235+
#pragma mark - NativeSampleTurboModuleEnumFloat
236236

237-
enum class SampleTurboModuleCxxEnumFloat { FA, FB };
237+
enum class NativeSampleTurboModuleEnumFloat { FA, FB };
238238

239239
template <>
240-
struct Bridging<SampleTurboModuleCxxEnumFloat> {
241-
static SampleTurboModuleCxxEnumFloat fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
240+
struct Bridging<NativeSampleTurboModuleEnumFloat> {
241+
static NativeSampleTurboModuleEnumFloat fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
242242
double value = (double)rawValue.asNumber();
243243
if (value == 1.23) {
244-
return SampleTurboModuleCxxEnumFloat::FA;
244+
return NativeSampleTurboModuleEnumFloat::FA;
245245
} else if (value == 4.56) {
246-
return SampleTurboModuleCxxEnumFloat::FB;
246+
return NativeSampleTurboModuleEnumFloat::FB;
247247
} else {
248248
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
249249
}
250250
}
251251

252-
static jsi::Value toJs(jsi::Runtime &rt, SampleTurboModuleCxxEnumFloat value) {
253-
if (value == SampleTurboModuleCxxEnumFloat::FA) {
252+
static jsi::Value toJs(jsi::Runtime &rt, NativeSampleTurboModuleEnumFloat value) {
253+
if (value == NativeSampleTurboModuleEnumFloat::FA) {
254254
return bridging::toJs(rt, 1.23);
255-
} else if (value == SampleTurboModuleCxxEnumFloat::FB) {
255+
} else if (value == NativeSampleTurboModuleEnumFloat::FB) {
256256
return bridging::toJs(rt, 4.56);
257257
} else {
258258
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
259259
}
260260
}
261261
};
262262

263-
#pragma mark - SampleTurboModuleCxxEnumNone
263+
#pragma mark - NativeSampleTurboModuleEnumNone
264264

265-
enum class SampleTurboModuleCxxEnumNone { NA, NB };
265+
enum class NativeSampleTurboModuleEnumNone { NA, NB };
266266

267267
template <>
268-
struct Bridging<SampleTurboModuleCxxEnumNone> {
269-
static SampleTurboModuleCxxEnumNone fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
268+
struct Bridging<NativeSampleTurboModuleEnumNone> {
269+
static NativeSampleTurboModuleEnumNone fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
270270
std::string value = rawValue.utf8(rt);
271271
if (value == \\"NA\\") {
272-
return SampleTurboModuleCxxEnumNone::NA;
272+
return NativeSampleTurboModuleEnumNone::NA;
273273
} else if (value == \\"NB\\") {
274-
return SampleTurboModuleCxxEnumNone::NB;
274+
return NativeSampleTurboModuleEnumNone::NB;
275275
} else {
276276
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
277277
}
278278
}
279279

280-
static jsi::String toJs(jsi::Runtime &rt, SampleTurboModuleCxxEnumNone value) {
281-
if (value == SampleTurboModuleCxxEnumNone::NA) {
280+
static jsi::String toJs(jsi::Runtime &rt, NativeSampleTurboModuleEnumNone value) {
281+
if (value == NativeSampleTurboModuleEnumNone::NA) {
282282
return bridging::toJs(rt, \\"NA\\");
283-
} else if (value == SampleTurboModuleCxxEnumNone::NB) {
283+
} else if (value == NativeSampleTurboModuleEnumNone::NB) {
284284
return bridging::toJs(rt, \\"NB\\");
285285
} else {
286286
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
287287
}
288288
}
289289
};
290290

291-
#pragma mark - SampleTurboModuleCxxEnumStr
291+
#pragma mark - NativeSampleTurboModuleEnumStr
292292

293-
enum class SampleTurboModuleCxxEnumStr { SA, SB };
293+
enum class NativeSampleTurboModuleEnumStr { SA, SB };
294294

295295
template <>
296-
struct Bridging<SampleTurboModuleCxxEnumStr> {
297-
static SampleTurboModuleCxxEnumStr fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
296+
struct Bridging<NativeSampleTurboModuleEnumStr> {
297+
static NativeSampleTurboModuleEnumStr fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
298298
std::string value = rawValue.utf8(rt);
299299
if (value == \\"s---a\\") {
300-
return SampleTurboModuleCxxEnumStr::SA;
300+
return NativeSampleTurboModuleEnumStr::SA;
301301
} else if (value == \\"s---b\\") {
302-
return SampleTurboModuleCxxEnumStr::SB;
302+
return NativeSampleTurboModuleEnumStr::SB;
303303
} else {
304304
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
305305
}
306306
}
307307

308-
static jsi::String toJs(jsi::Runtime &rt, SampleTurboModuleCxxEnumStr value) {
309-
if (value == SampleTurboModuleCxxEnumStr::SA) {
308+
static jsi::String toJs(jsi::Runtime &rt, NativeSampleTurboModuleEnumStr value) {
309+
if (value == NativeSampleTurboModuleEnumStr::SA) {
310310
return bridging::toJs(rt, \\"s---a\\");
311-
} else if (value == SampleTurboModuleCxxEnumStr::SB) {
311+
} else if (value == NativeSampleTurboModuleEnumStr::SB) {
312312
return bridging::toJs(rt, \\"s---b\\");
313313
} else {
314314
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
@@ -1779,87 +1779,87 @@ Map {
17791779
namespace facebook::react {
17801780

17811781

1782-
#pragma mark - SampleTurboModuleNumEnum
1782+
#pragma mark - NativeSampleTurboModuleNumEnum
17831783

1784-
enum class SampleTurboModuleNumEnum { ONE, TWO };
1784+
enum class NativeSampleTurboModuleNumEnum { ONE, TWO };
17851785

17861786
template <>
1787-
struct Bridging<SampleTurboModuleNumEnum> {
1788-
static SampleTurboModuleNumEnum fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
1787+
struct Bridging<NativeSampleTurboModuleNumEnum> {
1788+
static NativeSampleTurboModuleNumEnum fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
17891789
double value = (double)rawValue.asNumber();
17901790
if (value == 1) {
1791-
return SampleTurboModuleNumEnum::ONE;
1791+
return NativeSampleTurboModuleNumEnum::ONE;
17921792
} else if (value == 2) {
1793-
return SampleTurboModuleNumEnum::TWO;
1793+
return NativeSampleTurboModuleNumEnum::TWO;
17941794
} else {
17951795
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
17961796
}
17971797
}
17981798

1799-
static jsi::Value toJs(jsi::Runtime &rt, SampleTurboModuleNumEnum value) {
1800-
if (value == SampleTurboModuleNumEnum::ONE) {
1799+
static jsi::Value toJs(jsi::Runtime &rt, NativeSampleTurboModuleNumEnum value) {
1800+
if (value == NativeSampleTurboModuleNumEnum::ONE) {
18011801
return bridging::toJs(rt, 1);
1802-
} else if (value == SampleTurboModuleNumEnum::TWO) {
1802+
} else if (value == NativeSampleTurboModuleNumEnum::TWO) {
18031803
return bridging::toJs(rt, 2);
18041804
} else {
18051805
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
18061806
}
18071807
}
18081808
};
18091809

1810-
#pragma mark - SampleTurboModuleFloatEnum
1810+
#pragma mark - NativeSampleTurboModuleFloatEnum
18111811

1812-
enum class SampleTurboModuleFloatEnum { POINT_ZERO, POINT_ONE, POINT_TWO };
1812+
enum class NativeSampleTurboModuleFloatEnum { POINT_ZERO, POINT_ONE, POINT_TWO };
18131813

18141814
template <>
1815-
struct Bridging<SampleTurboModuleFloatEnum> {
1816-
static SampleTurboModuleFloatEnum fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
1815+
struct Bridging<NativeSampleTurboModuleFloatEnum> {
1816+
static NativeSampleTurboModuleFloatEnum fromJs(jsi::Runtime &rt, const jsi::Value &rawValue) {
18171817
double value = (double)rawValue.asNumber();
18181818
if (value == 0.0) {
1819-
return SampleTurboModuleFloatEnum::POINT_ZERO;
1819+
return NativeSampleTurboModuleFloatEnum::POINT_ZERO;
18201820
} else if (value == 0.1) {
1821-
return SampleTurboModuleFloatEnum::POINT_ONE;
1821+
return NativeSampleTurboModuleFloatEnum::POINT_ONE;
18221822
} else if (value == 0.2) {
1823-
return SampleTurboModuleFloatEnum::POINT_TWO;
1823+
return NativeSampleTurboModuleFloatEnum::POINT_TWO;
18241824
} else {
18251825
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
18261826
}
18271827
}
18281828

1829-
static jsi::Value toJs(jsi::Runtime &rt, SampleTurboModuleFloatEnum value) {
1830-
if (value == SampleTurboModuleFloatEnum::POINT_ZERO) {
1829+
static jsi::Value toJs(jsi::Runtime &rt, NativeSampleTurboModuleFloatEnum value) {
1830+
if (value == NativeSampleTurboModuleFloatEnum::POINT_ZERO) {
18311831
return bridging::toJs(rt, 0.0);
1832-
} else if (value == SampleTurboModuleFloatEnum::POINT_ONE) {
1832+
} else if (value == NativeSampleTurboModuleFloatEnum::POINT_ONE) {
18331833
return bridging::toJs(rt, 0.1);
1834-
} else if (value == SampleTurboModuleFloatEnum::POINT_TWO) {
1834+
} else if (value == NativeSampleTurboModuleFloatEnum::POINT_TWO) {
18351835
return bridging::toJs(rt, 0.2);
18361836
} else {
18371837
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");
18381838
}
18391839
}
18401840
};
18411841

1842-
#pragma mark - SampleTurboModuleStringEnum
1842+
#pragma mark - NativeSampleTurboModuleStringEnum
18431843

1844-
enum class SampleTurboModuleStringEnum { HELLO, GoodBye };
1844+
enum class NativeSampleTurboModuleStringEnum { HELLO, GoodBye };
18451845

18461846
template <>
1847-
struct Bridging<SampleTurboModuleStringEnum> {
1848-
static SampleTurboModuleStringEnum fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
1847+
struct Bridging<NativeSampleTurboModuleStringEnum> {
1848+
static NativeSampleTurboModuleStringEnum fromJs(jsi::Runtime &rt, const jsi::String &rawValue) {
18491849
std::string value = rawValue.utf8(rt);
18501850
if (value == \\"hello\\") {
1851-
return SampleTurboModuleStringEnum::HELLO;
1851+
return NativeSampleTurboModuleStringEnum::HELLO;
18521852
} else if (value == \\"goodbye\\") {
1853-
return SampleTurboModuleStringEnum::GoodBye;
1853+
return NativeSampleTurboModuleStringEnum::GoodBye;
18541854
} else {
18551855
throw jsi::JSError(rt, \\"No appropriate enum member found for value\\");
18561856
}
18571857
}
18581858

1859-
static jsi::String toJs(jsi::Runtime &rt, SampleTurboModuleStringEnum value) {
1860-
if (value == SampleTurboModuleStringEnum::HELLO) {
1859+
static jsi::String toJs(jsi::Runtime &rt, NativeSampleTurboModuleStringEnum value) {
1860+
if (value == NativeSampleTurboModuleStringEnum::HELLO) {
18611861
return bridging::toJs(rt, \\"hello\\");
1862-
} else if (value == SampleTurboModuleStringEnum::GoodBye) {
1862+
} else if (value == NativeSampleTurboModuleStringEnum::GoodBye) {
18631863
return bridging::toJs(rt, \\"goodbye\\");
18641864
} else {
18651865
throw jsi::JSError(rt, \\"No appropriate enum member found for enum value\\");

packages/rn-tester/NativeCxxModuleExample/NativeCxxModuleExample.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,16 @@ GraphNode NativeCxxModuleExample::getGraphNode(
8181
return arg;
8282
}
8383

84-
NativeCxxModuleExampleCxxEnumInt NativeCxxModuleExample::getNumEnum(
84+
NativeCxxModuleExampleEnumInt NativeCxxModuleExample::getNumEnum(
8585
jsi::Runtime& rt,
86-
NativeCxxModuleExampleCxxEnumInt arg) {
86+
NativeCxxModuleExampleEnumInt arg) {
8787
return arg;
8888
}
8989

90-
NativeCxxModuleExampleCxxEnumStr NativeCxxModuleExample::getStrEnum(
90+
NativeCxxModuleExampleEnumStr NativeCxxModuleExample::getStrEnum(
9191
jsi::Runtime& rt,
92-
NativeCxxModuleExampleCxxEnumNone arg) {
93-
return NativeCxxModuleExampleCxxEnumStr::SB;
92+
NativeCxxModuleExampleEnumNone /*arg*/) {
93+
return NativeCxxModuleExampleEnumStr::SB;
9494
}
9595

9696
std::map<std::string, std::optional<int32_t>> NativeCxxModuleExample::getMap(

packages/rn-tester/NativeCxxModuleExample/NativeCxxModuleExample.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ class NativeCxxModuleExample
160160

161161
GraphNode getGraphNode(jsi::Runtime& rt, GraphNode arg);
162162

163-
NativeCxxModuleExampleCxxEnumInt getNumEnum(
163+
NativeCxxModuleExampleEnumInt getNumEnum(
164164
jsi::Runtime& rt,
165-
NativeCxxModuleExampleCxxEnumInt arg);
165+
NativeCxxModuleExampleEnumInt arg);
166166

167-
NativeCxxModuleExampleCxxEnumStr getStrEnum(
167+
NativeCxxModuleExampleEnumStr getStrEnum(
168168
jsi::Runtime& rt,
169-
NativeCxxModuleExampleCxxEnumNone arg);
169+
NativeCxxModuleExampleEnumNone arg);
170170

171171
std::map<std::string, std::optional<int32_t>> getMap(
172172
jsi::Runtime& rt,

0 commit comments

Comments
 (0)