nitj: implement `self` accesses
authorAlexandre Terrasa <alexandre@moz-code.org>
Thu, 9 Jul 2015 23:20:44 +0000 (19:20 -0400)
committerAlexandre Terrasa <alexandre@moz-code.org>
Tue, 21 Jul 2015 21:23:20 +0000 (17:23 -0400)
Signed-off-by: Alexandre Terrasa <alexandre@moz-code.org>

src/compiler/java_compiler.nit

index d166f63..2380705 100644 (file)
@@ -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