summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2018-07-12 11:19:02 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2018-07-12 11:47:44 +0200
commit540aa1492c342f482be6838b97f54437f3b776e4 (patch)
treea5669db2920e2680c8fded68ef419fbed846c2ad
parente96b6ab9ab754fe33f6ff002ef80e371153dc716 (diff)
downloadvala-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.vala26
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 ();