From: Jean Privat Date: Mon, 30 Mar 2015 02:59:48 +0000 (+0700) Subject: interpreter: interpret `with` statement X-Git-Tag: v0.7.4~35^2~2 X-Git-Url: http://nitlanguage.org interpreter: interpret `with` statement Signed-off-by: Jean Privat --- diff --git a/src/interpreter/naive_interpreter.nit b/src/interpreter/naive_interpreter.nit index aba779a..21118ab 100644 --- a/src/interpreter/naive_interpreter.nit +++ b/src/interpreter/naive_interpreter.nit @@ -1270,14 +1270,16 @@ redef class ABlockExpr end redef class AVardeclExpr - redef fun stmt(v) + redef fun expr(v) do var ne = self.n_expr if ne != null then var i = v.expr(ne) - if i == null then return + if i == null then return null v.write_variable(self.variable.as(not null), i) + return i end + return null end end @@ -1462,6 +1464,19 @@ redef class AForExpr end end +redef class AWithExpr + redef fun stmt(v) + do + var expr = v.expr(self.n_expr) + if expr == null then return + + v.callsite(method_start, [expr]) + v.stmt(self.n_block) + v.is_escape(self.break_mark) # Clear the break + v.callsite(method_finish, [expr]) + end +end + redef class AAssertExpr redef fun stmt(v) do