extern
or intern
# Unbox all the arguments of a method when implemented `extern` or `intern`
fun unbox_signature_extern(m: MMethodDef, args: Array[RuntimeVariable]) is abstract
src/compiler/abstract_compiler.nit:1485,2--1486,84
redef fun unbox_signature_extern(m, args)
do
var msignature = m.msignature.resolve_for(m.mclassdef.bound_mtype, m.mclassdef.bound_mtype, m.mclassdef.mmodule, true)
if not m.mproperty.is_init and m.is_extern then
args.first = self.unbox_extern(args.first, m.mclassdef.mclass.mclass_type)
end
for i in [0..msignature.arity[ do
var mp = msignature.mparameters[i]
var t = mp.mtype
if mp.is_vararg then
t = args[i+1].mtype
end
if m.is_extern then args[i+1] = self.unbox_extern(args[i+1], t)
end
end
src/compiler/separate_compiler.nit:1277,2--1291,4
redef fun unbox_signature_extern(m, args)
do
var recv = args.first
for i in [0..m.msignature.arity[ do
var mp = m.msignature.mparameters[i]
var t = mp.mtype
if mp.is_vararg then
t = args[i+1].mtype
end
t = self.resolve_for(t, recv)
if m.is_extern then args[i+1] = self.unbox_extern(args[i+1], t)
end
end
src/compiler/global_compiler.nit:707,2--719,4