X-Git-Url: http://nitlanguage.org diff --git a/src/interpreter/naive_interpreter.nit b/src/interpreter/naive_interpreter.nit index c847b5f..7d7cab9 100644 --- a/src/interpreter/naive_interpreter.nit +++ b/src/interpreter/naive_interpreter.nit @@ -833,6 +833,8 @@ redef class AMethPropdef var recvval = args[0].to_i if pname == "unary -" then return v.int_instance(-args[0].to_i) + else if pname == "unary +" then + return args[0] else if pname == "+" then return v.int_instance(args[0].to_i + args[1].to_i) else if pname == "-" then @@ -907,6 +909,8 @@ redef class AMethPropdef var recv = args[0].to_f if pname == "unary -" then return v.float_instance(-recv) + else if pname == "unary +" then + return args[0] else if pname == "+" then return v.float_instance(recv + args[1].to_f) else if pname == "-" then @@ -1323,6 +1327,14 @@ redef class ASelfExpr end end +redef class AImplicitSelfExpr + redef fun expr(v) + do + if not is_sys then return super + return v.mainobj + end +end + redef class AEscapeExpr redef fun stmt(v) do @@ -1799,6 +1811,9 @@ redef class ANewExpr var mtype = v.unanchor_type(self.recvtype.as(not null)) var recv: Instance = new MutableInstance(mtype) v.init_instance(recv) + var callsite = self.callsite + if callsite == null then return recv + var args = v.varargize(callsite.mpropdef, recv, self.n_args.n_exprs) if args == null then return null var res2 = v.callsite(callsite, args)