From 5d766f60b28c32e14674ca1c7124c97d5efa48b4 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 26 Jul 2012 23:26:34 +0200 Subject: [PATCH] parse ahead into the return expression as expected --- parser.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/parser.c b/parser.c index 3ee206e..f644433 100644 --- a/parser.c +++ b/parser.c @@ -560,8 +560,15 @@ static bool parser_body_do(parser_t *parser, ast_block *block) { if (!strcmp(parser_tokval(parser), "return")) { - ast_expression *exp = parser_expression(parser); + ast_expression *exp; ast_return *ret; + + if (!parser_next(parser)) { + parseerror(parser, "expected return expression"); + return false; + } + + exp = parser_expression(parser); if (!exp) return false; ret = ast_return_new(exp->expression.node.context, exp); -- 2.39.2