Force assign declaration statement for all virtual/temp variables

This commit is contained in:
Mid 2025-10-15 14:11:24 +03:00
parent ecab77f9e9
commit 9d975eeceb

View File

@ -35,6 +35,7 @@ static AST *varify(AST *tlc, AST *chunk, AST *stmtPrev, AST *stmt, AST *e) {
assign->nodeKind = AST_STMT_ASSIGN;
assign->what = (AST*) ev[0];
assign->to = e;
vte->data.var.declaration = (AST*) assign;
if(stmtPrev) {
stmtPrev->statement.next = (AST*) assign;
@ -297,6 +298,7 @@ static void normalize_visitor(AST **nptr, AST *stmt, AST *stmtPrev, AST *chu, AS
assign2->nodeKind = AST_STMT_ASSIGN;
assign2->what = (AST*) s->stmtAssign.what;
assign2->to = (AST*) ev[0];
tmp->data.var.declaration = (AST*) s;
s->stmtAssign.what = (AST*) ev[1];
@ -517,6 +519,7 @@ static void pre_norm_visitor(AST **nptr, AST *stmt, AST *stmtPrev, AST *chunk, A
ass->what = (AST*) evar;
ass->to = ast_cast_expr((AST*) deref, vte->type); // Must cast because of "convention correctness"
ass->next = n->chunk.statementFirst;
vte->data.var.declaration = (AST*) ass;
if(n->chunk.statementFirst) {
n->chunk.statementFirst = ass;