From aa8b9eb1ad2a54f233c26a57d80b457b646c00dc Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 10 Jan 2013 18:52:43 +0100 Subject: [PATCH] parse_expression_leave: also end at a closing } - enum: check for } and , after an expression again --- parser.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/parser.c b/parser.c index 8090be4..f99fd79 100644 --- a/parser.c +++ b/parser.c @@ -1957,7 +1957,7 @@ static ast_expression* parse_expression_leave(parser_t *parser, bool stopatcomma goto onerr; } if (parser->tok == ';' || - (!parens && (parser->tok == ']' || parser->tok == ')'))) + (!parens && (parser->tok == ']' || parser->tok == ')' || parser->tok == '}'))) { break; } @@ -3508,6 +3508,13 @@ static bool parse_enum(parser_t *parser) goto onerror; } num = (var->constval.vfloat = asvalue->constval.vfloat) + 1; + + if (parser->tok == '}') + break; + if (parser->tok != ',') { + parseerror(parser, "expected `}` or comma after expression"); + goto onerror; + } } if (parser->tok != '}') { -- 2.39.2