summaryrefslogtreecommitdiff
path: root/codegen/valagirwriter.vala
diff options
context:
space:
mode:
authorMichal Hruby <michal.mhr@gmail.com>2011-01-31 18:22:42 +0100
committerJürg Billeter <j@bitron.ch>2011-03-01 08:08:20 +0100
commit4ff8deb2756c02a503351a0f7c99376cebd1303e (patch)
tree6c0667acfcea4e5e7eb5fe98cab5d60868d72cfd /codegen/valagirwriter.vala
parent6f5bf0eceda8f735a2f276d2e32ecf9477863929 (diff)
downloadvala-4ff8deb2756c02a503351a0f7c99376cebd1303e.tar.gz
girwriter: Don't use constructor tag with structs
Diffstat (limited to 'codegen/valagirwriter.vala')
-rw-r--r--codegen/valagirwriter.vala11
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) {