From: Wolfgang (Blub) Bumiller Date: Sat, 18 Aug 2012 15:58:51 +0000 (+0200) Subject: parse 'return' without values better X-Git-Tag: 0.1-rc1~191 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=701c387dbf5cff6b25d32e90db9ed95fedd4906a;p=xonotic%2Fgmqcc.git parse 'return' without values better --- diff --git a/parser.c b/parser.c index 90d7e86..a901c40 100644 --- a/parser.c +++ b/parser.c @@ -1612,15 +1612,15 @@ static bool parser_parse_statement(parser_t *parser, ast_block *block, ast_expre ast_delete(exp); return false; } - - *out = (ast_expression*)ret; - } else if (!parser_next(parser)) { - parseerror(parser, "expected semicolon"); + } else { + if (!parser_next(parser)) + parseerror(parser, "parse error"); if (expected->expression.next->expression.vtype != TYPE_VOID) { parseerror(parser, "return without value"); } - *out = NULL; + ret = ast_return_new(exp->expression.node.context, NULL); } + *out = (ast_expression*)ret; return true; } else if (!strcmp(parser_tokval(parser), "if")) @@ -1693,6 +1693,7 @@ static ast_block* parser_parse_block(parser_t *parser) break; if (!parser_parse_statement(parser, block, &expr)) { + parseerror(parser, "parse error"); ast_block_delete(block); block = NULL; goto cleanup;