From 6795b02e241346e372844e423f5a3ec6b3016985 Mon Sep 17 00:00:00 2001 From: ka-weihe Date: Wed, 28 Apr 2021 21:11:32 +0200 Subject: [PATCH] cgen: fix enum in map (#9912) --- vlib/builtin/map_test.v | 9 +++++++++ vlib/v/gen/c/cgen.v | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/vlib/builtin/map_test.v b/vlib/builtin/map_test.v index 92ceff3de5..771e1c28a5 100644 --- a/vlib/builtin/map_test.v +++ b/vlib/builtin/map_test.v @@ -617,6 +617,15 @@ type ColorAlias = Color fn test_alias_enum() { mut m := map[ColorAlias]string{} m[Color.red] = 'hi' + assert m[Color.red] == 'hi' +} + +fn test_enum_in_map() { + mut m := map[Color]string{} + m[Color.red] = 'hi' + assert Color.red in m + assert Color.green !in m + assert Color.blue !in m } fn test_voidptr_keys() { diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index d92d6b8ec1..4aebfd9631 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -3537,8 +3537,8 @@ fn (mut g Gen) infix_in_or_not_in(node ast.InfixExpr, left_sym ast.TypeSymbol, r } else if right_sym.kind == .map { g.write('_IN_MAP(') if !node.left_type.is_ptr() { - left_type_str := g.table.type_to_str(node.left_type) - g.write('ADDR($left_type_str, ') + styp := g.typ(node.left_type) + g.write('ADDR($styp, ') g.expr(node.left) g.write(')') } else {