engines: ANewExpr just return the plain instance if no callsite
authorJean Privat <jean@pryen.org>
Fri, 10 Apr 2015 05:13:39 +0000 (12:13 +0700)
committerJean Privat <jean@pryen.org>
Fri, 10 Apr 2015 05:13:39 +0000 (12:13 +0700)
Signed-off-by: Jean Privat <jean@pryen.org>

src/compiler/abstract_compiler.nit
src/interpreter/naive_interpreter.nit

index 3956744..0baf216 100644 (file)
@@ -3019,7 +3019,9 @@ redef class ANewExpr
 
                var recv = v.init_instance_or_extern(mtype)
 
-               var callsite = self.callsite.as(not null)
+               var callsite = self.callsite
+               if callsite == null then return recv
+
                var args = v.varargize(callsite.mpropdef, recv, self.n_args.n_exprs)
                var res2 = v.compile_callsite(callsite, args)
                if res2 != null then
index 272219f..2950bae 100644 (file)
@@ -1799,6 +1799,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)