diff options
author | Michal Hruby <michal.mhr@gmail.com> | 2011-01-31 18:22:42 +0100 |
---|---|---|
committer | Jürg Billeter <j@bitron.ch> | 2011-03-01 08:08:20 +0100 |
commit | 4ff8deb2756c02a503351a0f7c99376cebd1303e (patch) | |
tree | 6c0667acfcea4e5e7eb5fe98cab5d60868d72cfd /codegen/valagirwriter.vala | |
parent | 6f5bf0eceda8f735a2f276d2e32ecf9477863929 (diff) | |
download | vala-4ff8deb2756c02a503351a0f7c99376cebd1303e.tar.gz |
girwriter: Don't use constructor tag with structs
Diffstat (limited to 'codegen/valagirwriter.vala')
-rw-r--r-- | codegen/valagirwriter.vala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index 55fc523da..99b34ac7f 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -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) { |