From: Luca Bruno Date: Thu, 26 May 2011 11:50:11 +0000 (+0200) Subject: codewriter: Fix writing methods inside error domains X-Git-Tag: 0.13.0~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=335f64617ab79da63eeaf218c40a78837bea0e9f;p=thirdparty%2Fvala.git codewriter: Fix writing methods inside error domains --- diff --git a/vala/valacodewriter.vala b/vala/valacodewriter.vala index 9da08e354..01cb8ef70 100644 --- a/vala/valacodewriter.vala +++ b/vala/valacodewriter.vala @@ -676,20 +676,37 @@ public class Vala.CodeWriter : CodeVisitor { write_identifier (edomain.name); write_begin_block (); - edomain.accept_children (this); - - write_end_block (); - write_newline (); - } + bool first = true; + foreach (ErrorCode ecode in edomain.get_codes ()) { + if (first) { + first = false; + } else { + write_string (","); + write_newline (); + } - public override void visit_error_code (ErrorCode ecode) { - if (ecode.get_cname () != ecode.get_default_cname ()) { + if (ecode.get_cname () != ecode.get_default_cname ()) { + write_indent (); + write_string ("[CCode (cname = \"%s\")]".printf (ecode.get_cname ())); + } write_indent (); - write_string ("[CCode (cname = \"%s\")]".printf (ecode.get_cname ())); + write_identifier (ecode.name); } - write_indent (); - write_identifier (ecode.name); - write_string (","); + + if (!first) { + if (edomain.get_methods ().size > 0) { + write_string (";"); + } + write_newline (); + } + + current_scope = edomain.scope; + foreach (Method m in edomain.get_methods ()) { + m.accept (this); + } + current_scope = current_scope.parent_scope; + + write_end_block (); write_newline (); }