typing: add `ARangeExpr::init_callsite` and use it everywhere
[nit.git] / src / abstract_compiler.nit
index 2f7a00f..0f854ba 100644 (file)
@@ -335,7 +335,7 @@ class MakefileToolchain
                                var o = f.makefile_rule_name
                                var ff = f.filename.basename("")
                                makefile.write("{o}: {ff}\n")
-                               makefile.write("\t{f.makefile_rule_content}\n")
+                               makefile.write("\t{f.makefile_rule_content}\n\n")
                                dep_rules.add(f.makefile_rule_name)
 
                                if f isa ExternCppFile then ofiles.add(o)
@@ -567,6 +567,7 @@ abstract class AbstractCompiler
                v.add("signal(SIGINT, sig_handler);")
                v.add("signal(SIGTERM, sig_handler);")
                v.add("signal(SIGSEGV, sig_handler);")
+               v.add("signal(SIGPIPE, sig_handler);")
 
                v.add("glob_argc = argc; glob_argv = argv;")
                v.add("initialize_gc_option();")
@@ -2189,29 +2190,29 @@ redef class AForExpr
                var cl = v.expr(self.n_expr, null)
                var it_meth = self.method_iterator
                assert it_meth != null
-               var it = v.send(it_meth, [cl])
+               var it = v.compile_callsite(it_meth, [cl])
                assert it != null
                v.add("for(;;) \{")
                var isok_meth = self.method_is_ok
                assert isok_meth != null
-               var ok = v.send(isok_meth, [it])
+               var ok = v.compile_callsite(isok_meth, [it])
                assert ok != null
                v.add("if(!{ok}) break;")
                if self.variables.length == 1 then
                        var item_meth = self.method_item
                        assert item_meth != null
-                       var i = v.send(item_meth, [it])
+                       var i = v.compile_callsite(item_meth, [it])
                        assert i != null
                        v.assign(v.variable(variables.first), i)
                else if self.variables.length == 2 then
                        var key_meth = self.method_key
                        assert key_meth != null
-                       var i = v.send(key_meth, [it])
+                       var i = v.compile_callsite(key_meth, [it])
                        assert i != null
                        v.assign(v.variable(variables[0]), i)
                        var item_meth = self.method_item
                        assert item_meth != null
-                       i = v.send(item_meth, [it])
+                       i = v.compile_callsite(item_meth, [it])
                        assert i != null
                        v.assign(v.variable(variables[1]), i)
                else
@@ -2221,7 +2222,7 @@ redef class AForExpr
                v.add("CONTINUE_{v.escapemark_name(escapemark)}: (void)0;")
                var next_meth = self.method_next
                assert next_meth != null
-               v.send(next_meth, [it])
+               v.compile_callsite(next_meth, [it])
                v.add("\}")
                v.add("BREAK_{v.escapemark_name(escapemark)}: (void)0;")
        end
@@ -2364,7 +2365,7 @@ redef class ACrangeExpr
                var i2 = v.expr(self.n_expr2, null)
                var mtype = self.mtype.as(MClassType)
                var res = v.init_instance(mtype)
-               var it = v.send(v.get_property("init", res.mtype), [res, i1, i2])
+               var it = v.compile_callsite(init_callsite.as(not null), [res, i1, i2])
                return res
        end
 end
@@ -2376,7 +2377,7 @@ redef class AOrangeExpr
                var i2 = v.expr(self.n_expr2, null)
                var mtype = self.mtype.as(MClassType)
                var res = v.init_instance(mtype)
-               var it = v.send(v.get_property("without_last", res.mtype), [res, i1, i2])
+               var it = v.compile_callsite(init_callsite.as(not null), [res, i1, i2])
                return res
        end
 end