From: Alexandre Terrasa Date: Thu, 9 Jul 2015 23:20:44 +0000 (-0400) Subject: nitj: implement `self` accesses X-Git-Tag: v0.7.7~17^2~28 X-Git-Url: http://nitlanguage.org nitj: implement `self` accesses Signed-off-by: Alexandre Terrasa --- diff --git a/src/compiler/java_compiler.nit b/src/compiler/java_compiler.nit index d166f63..2380705 100644 --- a/src/compiler/java_compiler.nit +++ b/src/compiler/java_compiler.nit @@ -322,6 +322,13 @@ class JavaCompilerVisitor # The current `JavaStaticFrame` var frame: nullable JavaStaticFrame = null is writable + # Return a new local RuntimeVariable initialized from `args[0]` + fun new_recv(mtype: MType): RuntimeVariable do + var res = new_var(mtype) + add("{res} = args[0];") + return res + end + # Code generation # Add a line (will be suffixed by `\n`) @@ -748,6 +755,14 @@ redef class ABlockExpr end end +redef class ASelfExpr + redef fun expr(v) do return v.frame.as(not null).arguments.first +end + +redef class AImplicitSelfExpr + redef fun expr(v) do return v.frame.as(not null).arguments.first +end + redef class AAbortExpr redef fun stmt(v) do v.add_abort("Aborted") end