]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Don't use constructor tag with structs
authorMichal Hruby <michal.mhr@gmail.com>
Mon, 31 Jan 2011 17:22:42 +0000 (18:22 +0100)
committerJürg Billeter <j@bitron.ch>
Tue, 1 Mar 2011 07:08:20 +0000 (08:08 +0100)
codegen/valagirwriter.vala

index 55fc523da900b93c85c7e70b6231e56d44d04383..99b34ac7f1a101483e827475ce09d8d7b494e5d0 100644 (file)
@@ -821,11 +821,16 @@ public class Vala.GIRWriter : CodeVisitor {
 
                write_indent ();
 
+               bool is_struct = m.parent_symbol is Struct;
+               // GI doesn't like constructors that return void type
+               string tag_name = is_struct ? "function" : "constructor";
+
                if (m.parent_symbol is Class && m == ((Class)m.parent_symbol).default_construction_method ||
                        m.parent_symbol is Struct && m == ((Struct)m.parent_symbol).default_construction_method) {
-                       buffer.append_printf ("<constructor name=\"new\" c:identifier=\"%s\"", m.get_cname ());
+                       string m_name = is_struct ? "init" : "new";
+                       buffer.append_printf ("<%s name=\"%s\" c:identifier=\"%s\"", tag_name, m_name, m.get_cname ());
                } else {
-                       buffer.append_printf ("<constructor name=\"%s\" c:identifier=\"%s\"", m.name, m.get_cname ());
+                       buffer.append_printf ("<%s name=\"%s\" c:identifier=\"%s\"", tag_name, m.name, m.get_cname ());
                }
 
                if (m.tree_can_fail) {
@@ -842,7 +847,7 @@ public class Vala.GIRWriter : CodeVisitor {
 
                indent--;
                write_indent ();
-               buffer.append_printf ("</constructor>\n");
+               buffer.append_printf ("</%s>\n", tag_name);
        }
 
        public override void visit_property (Property prop) {