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})\{")
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
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