Skip to content

Commit e77513d

Browse files
Drop RCT_EXPORT_METHOD/RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD from RCTSampleTurboModule
Summary: `RCTSampleTurboModule` is a TurboModule: it conforms to `NativeSampleTurboModuleSpec` and implements `getTurboModule:` returning the codegen'd `NativeSampleTurboModuleSpecJSI`. For TurboModules, JS->ObjC dispatch is driven by codegen (the generated spec supplies the `selector` and argument kinds, invoked at runtime via `NSMethodSignature` / `NSInvocation`), not by the macros' `__rct_export__` metadata. The macros are therefore dead weight here. This converts all exported methods to plain ObjC method declarations — both the async-void `RCT_EXPORT_METHOD` methods and, unlike the automated codemod, the `RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD` ones, which are no longer used. Conformance to the generated `protocol NativeSampleTurboModuleSpec` keeps signature parity compiler-enforced. Every implementation's declared argument types already matched the generated protocol exactly, so no `RCTConvert` reconciliation or scalar boxing was needed. Signature-only refactor with no change to the JS-facing API. `RCT_EXPORT_MODULE()` is intentionally left in place — it is the module registration, not a method export. No C++ API snapshot regeneration is required: the `.api` snapshots describe the codegen'd protocol header, which is unchanged, and the macros expanded to these same selectors. Changelog: [Internal] Differential Revision: D115635319
1 parent 3e962d3 commit e77513d

1 file changed

Lines changed: 23 additions & 24 deletions

File tree

packages/react-native/ReactCommon/react/nativemodule/samples/platform/ios/ReactCommon/RCTSampleTurboModule.mm

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ - (void)installJSIBindingsWithRuntime:(facebook::jsi::Runtime &)runtime
8787

8888
#pragma mark - Spec Methods
8989

90-
RCT_EXPORT_METHOD(voidFunc)
90+
- (void)voidFunc
9191
{
9292
// Nothing to do
9393
[self emitOnPress];
@@ -96,47 +96,47 @@ - (void)installJSIBindingsWithRuntime:(facebook::jsi::Runtime &)runtime
9696
[self emitOnSubmit:@[ @{@"a" : @1, @"b" : @"two"}, @{@"a" : @3, @"b" : @"four"} ]];
9797
}
9898

99-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSNumber *, getBool : (BOOL)arg)
99+
- (NSNumber *)getBool:(BOOL)arg
100100
{
101101
return @(arg);
102102
}
103103

104-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSNumber *, getEnum : (double)arg)
104+
- (NSNumber *)getEnum:(double)arg
105105
{
106106
return @(arg);
107107
}
108108

109-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSNumber *, getNumber : (double)arg)
109+
- (NSNumber *)getNumber:(double)arg
110110
{
111111
return @(arg);
112112
}
113113

114-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSString *, getString : (NSString *)arg)
114+
- (NSString *)getString:(NSString *)arg
115115
{
116116
return arg;
117117
}
118118

119-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSArray<id<NSObject>> *, getArray : (NSArray *)arg)
119+
- (NSArray<id<NSObject>> *)getArray:(NSArray *)arg
120120
{
121121
return arg;
122122
}
123123

124-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObject : (NSDictionary *)arg)
124+
- (NSDictionary *)getObject:(NSDictionary *)arg
125125
{
126126
return arg;
127127
}
128128

129-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getUnsafeObject : (NSDictionary *)arg)
129+
- (NSDictionary *)getUnsafeObject:(NSDictionary *)arg
130130
{
131131
return arg;
132132
}
133133

134-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSNumber *, getRootTag : (double)arg)
134+
- (NSNumber *)getRootTag:(double)arg
135135
{
136136
return @(arg);
137137
}
138138

139-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getValue : (double)x y : (NSString *)y z : (NSDictionary *)z)
139+
- (NSDictionary *)getValue:(double)x y:(NSString *)y z:(NSDictionary *)z
140140
{
141141
return @{
142142
@"x" : @(x),
@@ -148,33 +148,32 @@ - (void)installJSIBindingsWithRuntime:(facebook::jsi::Runtime &)runtime
148148
// Arguments arrive as an immutable NSData, but an ArrayBuffer return must be
149149
// NSMutableData: it is handed to JS as a jsi::MutableBuffer, whose data() is
150150
// non-const. Echoing the argument back therefore needs a mutable copy.
151-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSMutableData *, getArrayBuffer : (NSData *)buffer)
151+
- (NSMutableData *)getArrayBuffer:(NSData *)buffer
152152
{
153153
return [buffer mutableCopy];
154154
}
155155

156-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSMutableData *, createNativeBuffer : (double)size)
156+
- (NSMutableData *)createNativeBuffer:(double)size
157157
{
158158
return [NSMutableData dataWithLength:(NSUInteger)size];
159159
}
160160

161-
RCT_EXPORT_METHOD(
162-
processAsyncBuffer : (NSData *)payload resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)
163-
reject)
161+
- (void)processAsyncBuffer:(NSData *)payload
162+
resolve:(RCTPromiseResolveBlock)resolve
163+
reject:(RCTPromiseRejectBlock)reject
164164
{
165165
resolve(@(payload.length));
166166
}
167167

168-
RCT_EXPORT_METHOD(getValueWithCallback : (RCTResponseSenderBlock)callback)
168+
- (void)getValueWithCallback:(RCTResponseSenderBlock)callback
169169
{
170170
if (callback == nullptr) {
171171
return;
172172
}
173173
callback(@[ @"value from callback!" ]);
174174
}
175175

176-
RCT_EXPORT_METHOD(
177-
getValueWithPromise : (BOOL)error resolve : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
176+
- (void)getValueWithPromise:(BOOL)error resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
178177
{
179178
if ((resolve == nullptr) || (reject == nullptr)) {
180179
return;
@@ -190,42 +189,42 @@ - (void)installJSIBindingsWithRuntime:(facebook::jsi::Runtime &)runtime
190189
}
191190
}
192191

193-
RCT_EXPORT_METHOD(voidFuncThrows)
192+
- (void)voidFuncThrows
194193
{
195194
NSException *myException = [NSException exceptionWithName:@"Exception"
196195
reason:@"Intentional exception from ObjC voidFuncThrows"
197196
userInfo:nil];
198197
@throw myException;
199198
}
200199

201-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectThrows : (NSDictionary *)arg)
200+
- (NSDictionary *)getObjectThrows:(NSDictionary *)arg
202201
{
203202
NSException *myException = [NSException exceptionWithName:@"Exception"
204203
reason:@"Intentional exception from ObjC getObjectThrows"
205204
userInfo:nil];
206205
@throw myException;
207206
}
208207

209-
RCT_EXPORT_METHOD(promiseThrows : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
208+
- (void)promiseThrows:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
210209
{
211210
NSException *myException = [NSException exceptionWithName:@"Exception"
212211
reason:@"Intentional exception from ObjC promiseThrows"
213212
userInfo:nil];
214213
@throw myException;
215214
}
216215

217-
RCT_EXPORT_METHOD(voidFuncAssert)
216+
- (void)voidFuncAssert
218217
{
219218
RCTAssert(false, @"Intentional assert from ObjC voidFuncAssert");
220219
}
221220

222-
RCT_EXPORT_SYNCHRONOUS_TYPED_METHOD(NSDictionary *, getObjectAssert : (NSDictionary *)arg)
221+
- (NSDictionary *)getObjectAssert:(NSDictionary *)arg
223222
{
224223
RCTAssert(false, @"Intentional assert from ObjC getObjectAssert");
225224
return arg;
226225
}
227226

228-
RCT_EXPORT_METHOD(promiseAssert : (RCTPromiseResolveBlock)resolve reject : (RCTPromiseRejectBlock)reject)
227+
- (void)promiseAssert:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
229228
{
230229
RCTAssert(false, @"Intentional assert from ObjC promiseAssert");
231230
}

0 commit comments

Comments
 (0)