Do naive compound literal comparison for $ parameters to parapoly procedures

This commit is contained in:
gingerBill
2025-12-15 10:41:50 +00:00
parent aed11c4619
commit c5a54a0e52
2 changed files with 37 additions and 1 deletions

View File

@@ -947,6 +947,8 @@ gb_internal gb_inline i32 cmp_f64(f64 a, f64 b) {
return (a > b) - (a < b);
}
gb_internal bool compare_exact_values_compound_lit(TokenKind op, ExactValue x, ExactValue y, bool *do_break_);
gb_internal bool compare_exact_values(TokenKind op, ExactValue x, ExactValue y) {
match_exact_values(&x, &y);
@@ -1055,9 +1057,24 @@ gb_internal bool compare_exact_values(TokenKind op, ExactValue x, ExactValue y)
case Token_NotEq: return x.value_typeid != y.value_typeid;
}
break;
case ExactValue_Compound:
if (op != Token_CmpEq && op != Token_NotEq) {
break;
}
if (x.kind != y.kind) {
break;
}
bool do_break = false;
bool res = compare_exact_values_compound_lit(op, x, y, &do_break);
if (do_break) {
break;
}
return res;
}
GB_PANIC("Invalid comparison");
GB_PANIC("Invalid comparison: %d", x.kind);
return false;
}