mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-01-19 06:40:49 +00:00
parse 'return' without values better
This commit is contained in:
parent
6d84010dc4
commit
701c387dbf
1 changed files with 6 additions and 5 deletions
11
parser.c
11
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;
|
||||
|
|
Loading…
Reference in a new issue