trying to fix infinite loop

This commit is contained in:
2025-04-24 22:27:56 +03:00
parent a799d4a3cb
commit c0ec218e42

View File

@@ -16,6 +16,7 @@ static AstNodeIndex parseBlock(Parser* p);
static AstNodeIndex parseLabeledStatement(Parser*);
static AstNodeIndex parseExpr(Parser*);
static AstNodeIndex expectExpr(Parser*);
static AstNodeIndex expectSemicolon(Parser*);
typedef struct {
enum { FIELD_STATE_NONE, FIELD_STATE_SEEN, FIELD_STATE_END } tag;
@@ -463,6 +464,10 @@ static AstTokenIndex expectToken(Parser* p, TokenizerTag tag) {
return 0; // tcc
}
static AstNodeIndex expectSemicolon(Parser *p) {
return expectToken(p, TOKEN_SEMICOLON);
}
static AstNodeIndex parseErrorUnionExpr(Parser* p) {
const AstNodeIndex suffix_expr = parseSuffixExpr(p);
if (suffix_expr == 0)
@@ -983,7 +988,9 @@ static AstNodeIndex expectStatement(Parser* p, bool allow_defer_var) {
if (allow_defer_var) {
return expectVarDeclExprStatement(p);
} else {
return parseAssignExpr(p);
const AstNodeIndex assign_expr = parseAssignExpr(p);
expectSemicolon(p);
return assign_expr;
}
}