mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-25 00:47:55 +00:00
Fix parsing for block/if expression within if/for/etc. statements
This commit is contained in:
+8
-5
@@ -1827,11 +1827,15 @@ AstNode *parse_operand(AstFile *f, bool lhs) {
|
||||
}
|
||||
|
||||
case Token_if:
|
||||
if (lhs) goto error;
|
||||
return parse_if_expr(f);
|
||||
if (!lhs && f->expr_level >= 0) {
|
||||
return parse_if_expr(f);
|
||||
}
|
||||
break;
|
||||
case Token_OpenBrace:
|
||||
if (lhs) goto error;
|
||||
return parse_block_expr(f);
|
||||
if (!lhs && f->expr_level >= 0) {
|
||||
return parse_block_expr(f);
|
||||
}
|
||||
break;
|
||||
|
||||
default: {
|
||||
AstNode *type = parse_identifier_or_type(f);
|
||||
@@ -1846,7 +1850,6 @@ AstNode *parse_operand(AstFile *f, bool lhs) {
|
||||
}
|
||||
}
|
||||
|
||||
error:
|
||||
Token begin = f->curr_token;
|
||||
syntax_error(begin, "Expected an operand");
|
||||
fix_advance_to_next_stmt(f);
|
||||
|
||||
Reference in New Issue
Block a user