Added basic for i loops. Missing some breaking tests and more tests. Also want to add for each at some point and it_index.

This commit is contained in:
2025-08-30 22:58:51 +02:00
parent 14f8b20d5f
commit 94fc3a4dad
7 changed files with 116 additions and 2 deletions

View File

@@ -1485,6 +1485,33 @@ check_node :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable_H
case .Return; {
return check_node(checker, node.children[0]);
}
case .For; {
loop_iterator := node.token;
symbol : Defined_Symbol;
symbol.name = loop_iterator.ident_value;
symbol.source_node = node;
variable, handle := new_type_variable(checker);
variable.name = symbol.name;
typename : string;
variable.type = .Int;
symbol.type_variable = handle;
add_symbol_to_scope(checker.state, *checker.result.scope_stack, checker.current_scope, symbol.name, symbol);
begin_iter := check_node(checker, node.children[0]);
begin_var := from_handle(checker, begin_iter);
if begin_var.type != .Int {
}
end_iter := check_node(checker, node.children[1]);
end_var := from_handle(checker, end_iter);
if end_var.type != .Int {
}
check_block(checker, node.children[2]);
}
case .If; {
cond_var := check_node(checker, node.children[0]);