@@ -253,22 +253,29 @@ napi_value interop_addMethod(napi_env env, napi_callback_info info) {
253253 napi_throw_error (env, nullptr , " Invalid class" );
254254 return nullptr ;
255255 }
256+ ObjCBridgeState *bridgeState = ObjCBridgeState::InstanceData (env);
257+ builder = (ClassBuilder *)bridgeState->classesByPointer [(id )builder];
256258
257259 napi_value name;
258260 napi_get_named_property (env, argv[1 ], " name" , &name);
259261
260- static char funcNameBuf[512 ];
261- napi_get_value_string_utf8 (env, name, funcNameBuf, 512 , nullptr );
262- std::string funcName = funcNameBuf;
262+ if (builder->isFinal ) {
263+ static char funcNameBuf[512 ];
264+ napi_get_value_string_utf8 (env, name, funcNameBuf, 512 , nullptr );
265+ std::string funcName = funcNameBuf;
263266
264- MethodDescriptor *desc = builder->lookupMethodDescriptor (funcName);
265- if (desc == nullptr ) {
266- napi_throw_error (env, nullptr , " Invalid method, descriptor not found" );
267- return nullptr ;
268- }
269-
270- builder->addMethod (funcName, desc, name, argv[1 ]);
267+ MethodDescriptor *desc = builder->lookupMethodDescriptor (funcName);
268+ if (desc == nullptr ) {
269+ napi_throw_error (env, nullptr , " Invalid method, descriptor not found" );
270+ return nullptr ;
271+ }
271272
273+ builder->addMethod (funcName, desc, name, argv[1 ]);
274+ } else {
275+ napi_set_property (env, get_ref_value (env, builder->prototype ), name,
276+ argv[1 ]);
277+ }
278+
272279 return nullptr ;
273280}
274281
@@ -283,6 +290,8 @@ napi_value interop_addProtocol(napi_env env, napi_callback_info info) {
283290 napi_throw_error (env, nullptr , " Invalid class" );
284291 return nullptr ;
285292 }
293+ ObjCBridgeState *bridgeState = ObjCBridgeState::InstanceData (env);
294+ builder = (ClassBuilder *)bridgeState->classesByPointer [(id )builder];
286295
287296 ObjCProtocol *proto = nullptr ;
288297 napi_unwrap (env, argv[1 ], (void **)&proto);
0 commit comments