never write typedefs for static or declaration-only classes and
authorJuerg Billeter <j@bitron.ch>
Sat, 27 Oct 2007 19:04:59 +0000 (19:04 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 27 Oct 2007 19:04:59 +0000 (19:04 +0000)
2007-10-27  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodegeneratorsourcefile.vala: never write typedefs for
  static or declaration-only classes and interfaces, fixes bug 479106

svn path=/trunk/; revision=668

ChangeLog
gobject/valaccodegeneratorsourcefile.vala

index 9909600..09a48d0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2007-10-27  Jürg Billeter  <j@bitron.ch>
 
+       * gobject/valaccodegeneratorsourcefile.vala: never write typedefs for
+         static or declaration-only classes and interfaces, fixes bug 479106
+
+2007-10-27  Jürg Billeter  <j@bitron.ch>
+
        * vala/valasemanticanalyzer.vala: display line number when reporting
          type error in conditional expression, fixes bug 478392
 
index ce464c4..a410da3 100644 (file)
@@ -202,12 +202,16 @@ public class Vala.CCodeGenerator {
                                                header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (st.get_cname ()), new CCodeVariableDeclarator (st.get_cname ())));
                                        } else if (node is Class) {
                                                var cl = (Class) node;
-                                               header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (cl.get_cname ()), new CCodeVariableDeclarator (cl.get_cname ())));
-                                               header_type_declaration.append (new CCodeTypeDefinition ("struct _%sClass".printf (cl.get_cname ()), new CCodeVariableDeclarator ("%sClass".printf (cl.get_cname ()))));
+                                               if (!cl.is_static) {
+                                                       header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (cl.get_cname ()), new CCodeVariableDeclarator (cl.get_cname ())));
+                                                       header_type_declaration.append (new CCodeTypeDefinition ("struct _%sClass".printf (cl.get_cname ()), new CCodeVariableDeclarator ("%sClass".printf (cl.get_cname ()))));
+                                               }
                                        } else if (node is Interface) {
                                                var iface = (Interface) node;
-                                               header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (iface.get_cname ()), new CCodeVariableDeclarator (iface.get_cname ())));
-                                               header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (iface.get_type_cname ()), new CCodeVariableDeclarator (iface.get_type_cname ())));
+                                               if (!iface.is_static && !iface.declaration_only) {
+                                                       header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (iface.get_cname ()), new CCodeVariableDeclarator (iface.get_cname ())));
+                                                       header_type_declaration.append (new CCodeTypeDefinition ("struct _%s".printf (iface.get_type_cname ()), new CCodeVariableDeclarator (iface.get_type_cname ())));
+                                               }
                                        }
                                }
                        }