Added unary expressions to semcheck and codegen.

This commit is contained in:
2025-01-08 22:37:48 +01:00
parent 1adb289c10
commit 4053400152
25 changed files with 149 additions and 24 deletions

View File

@@ -330,6 +330,7 @@ no_matching_overload_found :: (checker : *Semantic_Checker, call : *AST_Node, ov
record_error(checker, message, locations, false);
}
not_all_control_paths_return_value :: (checker : *Semantic_Checker, node : *AST_Node) {
builder : String_Builder;
init_string_builder(*builder,, temp);
@@ -1374,6 +1375,19 @@ check_node :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable_H
field_var := create_field(checker, node);
return field_var;
}
case .Unary; {
var := check_node(checker, node.children[0]);
variable, handle := new_type_variable(checker);
type := from_handle(checker, var);
variable.type = type.type;
variable.typename = type.typename;
variable.scope = type.scope;
variable.source_node = node;
node.type_variable = handle;
add_child(variable, var);
return handle;
}
case .Binary; {
lhs_var := check_node(checker, node.children[0]);
if lhs_var == 0 {