summaryrefslogtreecommitdiff
path: root/vala/valagenieparser.vala
diff options
context:
space:
mode:
Diffstat (limited to 'vala/valagenieparser.vala')
-rw-r--r--vala/valagenieparser.vala37
1 files changed, 22 insertions, 15 deletions
diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala
index 09b7ca6c4..53ff02b14 100644
--- a/vala/valagenieparser.vala
+++ b/vala/valagenieparser.vala
@@ -3634,27 +3634,34 @@ public class Vala.Genie.Parser : CodeVisitor {
expect (TokenType.EOL);
expect (TokenType.INDENT);
do {
- if (current () == TokenType.DEDENT && en.get_values ().size > 0) {
+ TokenType cur = current ();
+ if (cur == TokenType.DEDENT && en.get_values ().size > 0) {
// allow trailing comma
break;
}
- var value_attrs = parse_attributes (false);
- var value_begin = get_location ();
- string id = parse_identifier ();
- comment = scanner.pop_comment ();
+ if (cur == TokenType.DEF) {
+ var en_method = parse_declaration ();
+ assert (en_method is Method);
+ en.add_method ((Method) en_method);
+ } else {
+ var value_attrs = parse_attributes (false);
+ var value_begin = get_location ();
+ string id = parse_identifier ();
+ comment = scanner.pop_comment ();
- Expression value = null;
- if (accept (TokenType.ASSIGN)) {
- value = parse_expression ();
- }
+ Expression value = null;
+ if (accept (TokenType.ASSIGN)) {
+ value = parse_expression ();
+ }
- var ev = new EnumValue (id, value, get_src (value_begin), comment);
- ev.access = SymbolAccessibility.PUBLIC;
- set_attributes (ev, value_attrs);
+ var ev = new EnumValue (id, value, get_src (value_begin), comment);
+ ev.access = SymbolAccessibility.PUBLIC;
+ set_attributes (ev, value_attrs);
- en.add_value (ev);
- if (expect_separator ()) {
- accept (TokenType.EOL);
+ en.add_value (ev);
+ if (expect_separator ()) {
+ accept (TokenType.EOL);
+ }
}
} while (true);