Unbox all the arguments of a method when implemented extern or intern

Property definitions

nitc $ AbstractCompilerVisitor :: unbox_signature_extern
	# 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

nitc $ SeparateCompilerVisitor :: unbox_signature_extern
	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

nitc $ GlobalCompilerVisitor :: unbox_signature_extern
	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