Merge branch 'package2module' into wip
[nit.git] / src / compiling / compiling_icode.nit
index 09eb1bb..00e87c4 100644 (file)
@@ -266,7 +266,7 @@ redef class IRoutine
                else
                        p = cparams.join(", ")
                end
-               if human_name != null then v.add_decl("#define LOCATE_{cname} \"{human_name}\"")
+               if human_name != null then v.add_decl("static const char * const LOCATE_{cname} = \"{human_name}\";")
                v.add_decl("{r} {cname}({p});")
                v.add_decl("typedef {r} (*{cname}_t)({p});")
                v.add_instr("{r} {cname}({p})\{")
@@ -577,16 +577,10 @@ redef class ICall
                var w = new Writer
                var prop = property
                if prop.global.is_init then args.add("init_table")
-               if prop.name == (once ("add".to_symbol)) and prop.local_class.name == (once ("Array".to_symbol)) then
-                       w.add(prop.cname)
-                       w.add("(")
-               else
-                       w.add(prop.global.meth_call)
-                       w.add("(")
-                       w.add(args.first)
-                       w.add(")(")
-               end
-               var first = true
+               w.add(prop.global.meth_call)
+               w.add("(")
+               w.add(args.first)
+               w.add(")(")
                w.add_all(args, ", ")
                w.add(")")
                return w
@@ -939,29 +933,25 @@ redef class IAbort
        do
                v.add_location(location)
                var w = v.new_instr
-               w.add("fprintf(stderr")
-               for t in texts do
-                       w.add(", \"")
-                       w.add(t)
+               w.add("nit_abort(\"")
+               w.add(texts[0])
+               if texts.length > 1 then
+                       w.add("\", \"")
+                       w.add(texts[1])
                        w.add("\"")
+               else
+                       w.add("\", NULL")
                end
-               w.add(");\n")
-
-               var ll = location
-               w = v.new_instr
-               w.add("fprintf(stderr, \" (%s")
-               if ll != null then
-                       w.add(":%d")
-               end
-               w.add(")\\n\", LOCATE_")
+               w.add(", LOCATE_")
                w.add(module_location.name.to_s)
+               var ll = location
                if ll != null then
                        w.add(", ")
                        w.add(ll.line_start.to_s)
+               else
+                       w.add(", 0")
                end
                w.add(");\n")
-
-               v.add_instr("nit_exit(1);")
        end
 end