diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2018-07-12 11:19:02 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2018-07-12 11:47:44 +0200 |
commit | 540aa1492c342f482be6838b97f54437f3b776e4 (patch) | |
tree | a5669db2920e2680c8fded68ef419fbed846c2ad | |
parent | e96b6ab9ab754fe33f6ff002ef80e371153dc716 (diff) | |
download | vala-540aa1492c342f482be6838b97f54437f3b776e4.tar.gz |
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
-rw-r--r-- | vala/valaparser.vala | 26 |
1 files 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 (); |