Fix type result on binary compuations.

This commit is contained in:
2025-08-24 11:37:16 +02:00
parent 4f37ed03c0
commit f6801e3eeb
3 changed files with 64 additions and 26 deletions

View File

@@ -1435,9 +1435,13 @@ check_node :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable_H
variable, handle := new_type_variable(checker);
lhs_type := from_handle(checker, lhs_var);
variable.type = lhs_type.type;
rhs_type := from_handle(checker, rhs_var);
variable.type = lhs_type.type;
variable.typename = lhs_type.typename;
variable.scope = lhs_type.scope;
variable.scope = lhs_type.scope;
variable.source_node = node;
node.type_variable = handle;
add_child(variable, lhs_var);
@@ -1452,6 +1456,16 @@ check_node :: (checker : *Semantic_Checker, node : *AST_Node) -> Type_Variable_H
type_mismatch(checker, node, node.children[1], lhs_var, rhs_var);
return 0;
}
if lhs_type.type == .Struct {
variable.type = lhs_type.type;
variable.typename = lhs_type.typename;
variable.scope = lhs_type.scope;
} else if rhs_type.type == .Struct {
variable.type = rhs_type.type;
variable.typename = rhs_type.typename;
variable.scope = rhs_type.scope;
}
}
case .TOKEN_ASSIGN; {
if !types_compatible(checker, lhs_var, rhs_var) {