From 540aa1492c342f482be6838b97f54437f3b776e4 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Thu, 12 Jul 2018 11:19:02 +0200 Subject: [PATCH] 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 --- vala/valaparser.vala | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) 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 (); -- 2.47.2