improve int/float type resolution

This commit is contained in:
2026-08-08 22:37:35 +02:00
parent 081a3fd5df
commit e0f1d2d7cb
2 changed files with 19 additions and 3 deletions
+6 -2
View File
@@ -4205,7 +4205,11 @@ record_field_expr_candidate :: proc(
}
expr := checker.ast_module.exprs[expr_id]
constraint := checker.record_field_constraints[slot]
if !numeric_operand_is_open(checker, expr_id, locals, pkg, file) {
open := numeric_operand_is_open(checker, expr_id, locals, pkg, file)
if open && is_runtime_type(checker, checker.module.types.fields[slot].type) {
return false
}
if !open {
concrete := types.constraint_target(constraint, inferred, &checker.module.types)
if is_runtime_type(checker, concrete) {
return merge_record_field_demand(checker, slot, concrete, expr.span)
@@ -4224,7 +4228,7 @@ record_field_expr_candidate :: proc(
if is_float_constant_expr(checker, expr_id) {
return merge_record_field_default(checker, slot, types.F64, expr.span)
}
if numeric_operand_is_open(checker, expr_id, locals, pkg, file) {
if open {
candidate := inferred
if constraint == types.FLOAT && types.is_concrete_integer(candidate) {
candidate = types.F64