]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codewriter: Fix writing methods inside error domains
authorLuca Bruno <lucabru@src.gnome.org>
Thu, 26 May 2011 11:50:11 +0000 (13:50 +0200)
committerLuca Bruno <lucabru@src.gnome.org>
Thu, 26 May 2011 11:52:54 +0000 (13:52 +0200)
vala/valacodewriter.vala

index 9da08e3543ea7f5c72ca9ff66412464e2d668310..01cb8ef707e26fb79fd0d37ace802f3a6200726f 100644 (file)
@@ -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 ();
        }