From: Alexis Laferrière Date: Fri, 5 Jun 2015 13:48:53 +0000 (-0400) Subject: src: intro `call_extern` in interpreter X-Git-Tag: v0.7.6~29^2~16 X-Git-Url: http://nitlanguage.org src: intro `call_extern` in interpreter Signed-off-by: Alexis Laferrière --- diff --git a/src/interpreter/naive_interpreter.nit b/src/interpreter/naive_interpreter.nit index 16e0b48..b1cd48d 100644 --- a/src/interpreter/naive_interpreter.nit +++ b/src/interpreter/naive_interpreter.nit @@ -800,13 +800,21 @@ redef class AMethPropdef if mpropdef.is_intern then fatal(v, "NOT YET IMPLEMENTED intern {mpropdef}") else if mpropdef.is_extern then - fatal(v, "NOT YET IMPLEMENTED extern {mpropdef}") + var res = call_extern(v, mpropdef, arguments, f) + if res != v.error_instance then return res else fatal(v, "NOT YET IMPLEMENTED {mpropdef}") end abort end + # Call this extern method + protected fun call_extern(v: NaiveInterpreter, mpropdef: MMethodDef, arguments: Array[Instance], f: Frame): nullable Instance + do + fatal(v, "NOT YET IMPLEMENTED extern {mpropdef}") + return v.error_instance + end + # Interprets a intern or a shortcut extern method. # Returns the result for a function, `null` for a procedure, or `error_instance` if the method is unknown. private fun intern_call(v: NaiveInterpreter, mpropdef: MMethodDef, args: Array[Instance]): nullable Instance