From: Rico Tzschichholz Date: Thu, 12 Jul 2018 09:19:02 +0000 (+0200) Subject: parser: Accept "empty" enums/error-domains X-Git-Tag: 0.41.90~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=540aa1492c342f482be6838b97f54437f3b776e4;p=thirdparty%2Fvala.git parser: Accept "empty" enums/error-domains This drops the semantic check from the parser. Actual errors will be caught later by the SemanticAnalyzer. See https://gitlab.gnome.org/GNOME/vala/issues/253 --- diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 9a26015c1..e5accb128 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -3087,10 +3087,17 @@ public class Vala.Parser : CodeVisitor { set_attributes (en, attrs); expect (TokenType.OPEN_BRACE); + var inner_begin = get_location (); + try { + // enum methods + while (current () != TokenType.CLOSE_BRACE) { + parse_declaration (en); + } + } catch (ParseError e) { + rollback (inner_begin); + } do { - if (current () == TokenType.CLOSE_BRACE - && en.get_values ().size > 0) { - // allow trailing comma + if (current () == TokenType.CLOSE_BRACE) { break; } var value_attrs = parse_attributes (); @@ -3144,10 +3151,17 @@ public class Vala.Parser : CodeVisitor { set_attributes (ed, attrs); expect (TokenType.OPEN_BRACE); + var inner_begin = get_location (); + try { + // errordomain methods + while (current () != TokenType.CLOSE_BRACE) { + parse_declaration (ed); + } + } catch (ParseError e) { + rollback (inner_begin); + } do { - if (current () == TokenType.CLOSE_BRACE - && ed.get_codes ().size > 0) { - // allow trailing comma + if (current () == TokenType.CLOSE_BRACE) { break; } var code_attrs = parse_attributes ();