Add init statement to if

This commit is contained in:
Krzosa Karol
2022-05-26 18:57:15 +02:00
parent 8e4942f5ae
commit ec773c08be
5 changed files with 71 additions and 7 deletions

View File

@@ -212,12 +212,27 @@ eval_stmt(Ast *ast, Ast_Resolved_Type *ret){
Ast_End();
}
Ast_Begin(AST_INIT, Ast_Init){
switch(node->op){
case TK_Comma:{
Operand op = eval_expr(node->expr);
Sym *sym = sym_new(SYM_Var, node->ident->intern_val, op.type, node);
sym_insert(sym);
}break;
invalid_default_case;
}
Ast_End();
}
Ast_Begin(AST_IF, Ast_If){
For(node->ifs){
if(it[0]->expr) eval_expr(it[0]->expr);
if(it[0]->init) eval_stmt(it[0]->init, ret);
S64 scope_index = scope_push();
For_It(it[0]->block->stmts, jt){
eval_stmt(jt[0], ret);
}
scope_pop(scope_index);
}
Ast_End();
}