do
super
- if not npropdef isa AExternPropdef then return
+ if not npropdef isa AMethPropdef then return
var code_block = npropdef.n_extern_code_block
if code_block == null then return
private fun impl_java_class_name: String do return "Nit_{name}"
end
-redef class AExternPropdef
+redef class AMethPropdef
redef fun verify_nitni_callbacks(toolcontext)
do
super
amodule.ensure_compile_ffi_wrapper
compile_ffi_method(mmodule)
- assert self isa AExternPropdef
-
# nitni - Compile missing callbacks
mmodule.ensure_compile_nitni_base(v)
var ccu = mmodule.nitni_ccu.as(not null)
redef fun process_npropdef(npropdef)
do
- if not npropdef isa AExternPropdef then return
+ if not npropdef isa AMethPropdef then return
+ var mpropdef = npropdef.mpropdef
+ if mpropdef == null then return
+ if not mpropdef.is_extern then return
npropdef.verify_nitni_callbacks(toolcontext)
end
end
end
-redef class AExternPropdef
+redef class AMethPropdef
private var foreign_callbacks_cache: nullable ForeignCallbackSet = null
# All foreign callbacks from this method
redef fun accept_rapid_type_visitor(v)
do
+ if foreign_callbacks_cache == null then return
+
for cb in foreign_callbacks.callbacks do v.add_send(cb.recv_mtype, cb.mproperty.as(MMethod))
for cast in foreign_callbacks.casts do v.add_cast_type(cast.to)
for sup in foreign_callbacks.supers do