Suppress C warnings related to NEW_ functions
authorJean Privat <jean@pryen.org>
Sun, 25 Jan 2009 05:09:51 +0000 (00:09 -0500)
committerJean Privat <jean@pryen.org>
Sun, 25 Jan 2009 05:09:51 +0000 (00:09 -0500)
Declare real NEW_{class}_{meth} function prototypes in sep.h files
Remove useless NEW_{meth} functions prototypes from sep.h files

src/compiling/compiling_global.nit
src/compiling/compiling_methods.nit

index 519878e..8a70439 100644 (file)
@@ -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}();")
index 63f6bfa..75573f2 100644 (file)
@@ -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