Tilde: Add in/not_in for maps

This commit is contained in:
gingerBill
2023-08-07 14:43:11 +01:00
parent 0c1b39d881
commit 0636887931
2 changed files with 13 additions and 9 deletions

View File

@@ -2135,15 +2135,14 @@ gb_internal cgValue cg_build_binary_expr(cgProcedure *p, Ast *expr) {
switch (rt->kind) {
case Type_Map:
{
GB_PANIC("TODO(bill): in/not_in for maps");
// cgValue map_ptr = cg_address_from_load_or_generate_local(p, right);
// cgValue key = left;
// cgValue ptr = cg_internal_dynamic_map_get_ptr(p, map_ptr, key);
// if (be->op.kind == Token_in) {
// return cg_emit_conv(p, cg_emit_comp_against_nil(p, Token_NotEq, ptr), t_bool);
// } else {
// return cg_emit_conv(p, cg_emit_comp_against_nil(p, Token_CmpEq, ptr), t_bool);
// }
cgValue map_ptr = cg_address_from_load_or_generate_local(p, right);
cgValue key = left;
cgValue ptr = cg_internal_dynamic_map_get_ptr(p, map_ptr, key);
if (be->op.kind == Token_in) {
return cg_emit_conv(p, cg_emit_comp_against_nil(p, Token_NotEq, ptr), t_bool);
} else {
return cg_emit_conv(p, cg_emit_comp_against_nil(p, Token_CmpEq, ptr), t_bool);
}
}
break;
case Type_BitSet: