From 701c387dbf5cff6b25d32e90db9ed95fedd4906a Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Sat, 18 Aug 2012 17:58:51 +0200 Subject: [PATCH] parse 'return' without values better --- parser.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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; -- 2.39.2