From: Jean Privat Date: Sun, 25 Jan 2009 05:09:51 +0000 (-0500) Subject: Suppress C warnings related to NEW_ functions X-Git-Url: http://nitlanguage.org Suppress C warnings related to NEW_ functions Declare real NEW_{class}_{meth} function prototypes in sep.h files Remove useless NEW_{meth} functions prototypes from sep.h files --- diff --git a/src/compiling/compiling_global.nit b/src/compiling/compiling_global.nit index 519878e..8a70439 100644 --- a/src/compiling/compiling_global.nit +++ b/src/compiling/compiling_global.nit @@ -506,19 +506,29 @@ redef class MMSrcModule end end for c in src_local_classes do - for p in c.src_local_properties do - var pg = p.global - if pg.intro == p and p isa MMAttribute then - if v.tc.attr_sim then - var bc = pg.local_class - assert bc isa MMSrcLocalClass - var s = bc.base_attr_pos.symbol - v.add_decl("#define {pg.attr_access}(recv) ATTRS(recv, {s}, {pg.pos_of})") - else - v.add_decl("#define {pg.attr_access}(recv) ATTR(recv, {pg.color_id})") + for pg in c.global_properties do + var p = c[pg] + if p.local_class == c then + if pg.intro == p and p isa MMAttribute then + if v.tc.attr_sim then + var bc = pg.local_class + assert bc isa MMSrcLocalClass + var s = bc.base_attr_pos.symbol + v.add_decl("#define {pg.attr_access}(recv) ATTRS(recv, {s}, {pg.pos_of})") + else + v.add_decl("#define {pg.attr_access}(recv) ATTR(recv, {pg.color_id})") + end + end + p.compile_property_to_c(v) + end + if pg.is_init then + # Declare constructors + var params = new Array[String] + for i in [0..p.signature.arity[ do + params.add("val_t p{i}") end + v.add_decl("val_t NEW_{c}_{p.global.intro.cname}({params.join(", ")});") end - p.compile_property_to_c(v) end end end @@ -896,9 +906,8 @@ redef class MMLocalClass args.add("p{i}") end args.add("init_table") - var s = "val_t NEW_{self}_{p.global.intro.cname}({params.join(", ")})" - v.add_decl(s + ";") - v.add_instr(s + " \{") + var s = "val_t NEW_{self}_{p.global.intro.cname}({params.join(", ")}) \{" + v.add_instr(s) v.indent v.add_instr(init_table_decl) v.add_instr("val_t self = NEW_{name}();") diff --git a/src/compiling/compiling_methods.nit b/src/compiling/compiling_methods.nit index 63f6bfa..75573f2 100644 --- a/src/compiling/compiling_methods.nit +++ b/src/compiling/compiling_methods.nit @@ -314,15 +314,10 @@ redef class MMSrcMethod protected meth decl_csignature(v: CompilerVisitor, args: Array[String]): String do var params = new Array[String] - var params_new: Array[String] = null - if global.is_init then - params_new = new Array[String] - end params.add("val_t {args[0]}") for i in [0..signature.arity[ do var p = "val_t {args[i+1]}" params.add(p) - if params_new != null then params_new.add(p) end if global.is_init then params.add("int* init_table") @@ -337,9 +332,6 @@ redef class MMSrcMethod var s = "{ret} {cname}({p})" v.add_decl("typedef {ret} (* {cname}_t)({p});") v.add_decl(s + ";") - if params_new != null then - v.add_decl("val_t NEW_{cname}({params_new.join(", ")});") - end return s end