parser/yield-return.vala \
parser/bug728574.vala \
parser/bug749576.vala \
+ parser-keep-going/member-initializer.vala \
resolver/class-base-cycle.test \
resolver/interface-prerequisite-cycle.test \
resolver/peek-inner-types-ambiguous.test \
EXTRA_DIST = \
glib/tests-extra-environment.sh \
gtktemplate/tests-extra-environment.sh \
+ parser-keep-going/tests-extra-environment.sh \
linux/tests-extra-environment.sh \
nullability/tests-extra-environment.sh \
posix/tests-extra-environment.sh \
}
}
- string parse_identifier () throws ParseError {
+ string parse_identifier (bool required = false) throws ParseError {
try {
skip_identifier ();
} catch (ParseError e) {
- if (context.keep_going) {
+ if (!required && context.keep_going) {
report_parse_error (e);
prev ();
return get_location_string ();
return list;
}
- MemberInitializer parse_member_initializer () throws ParseError {
+ MemberInitializer parse_member_initializer (bool chained = false) throws ParseError {
var begin = get_location ();
- string id = parse_identifier ();
+ string id = parse_identifier (chained);
expect (TokenType.ASSIGN);
var inner = get_location ();
Expression expr;
try {
// chained member initializer
- expr = parse_member_initializer ();
+ expr = parse_member_initializer (true);
} catch {
rollback (inner);
expr = parse_expression ();