From dff385cb37cd32ab3b2caf65a27e0e7c324dbfb1 Mon Sep 17 00:00:00 2001 From: yuyi Date: Fri, 3 Jul 2020 22:33:53 +0800 Subject: [PATCH] cgen: fix map_in mut (#5638) --- vlib/builtin/map_test.v | 12 ++++++++++++ vlib/v/gen/cgen.v | 3 +++ 2 files changed, 15 insertions(+) diff --git a/vlib/builtin/map_test.v b/vlib/builtin/map_test.v index a265e2bc99..f68fa5391a 100644 --- a/vlib/builtin/map_test.v +++ b/vlib/builtin/map_test.v @@ -301,3 +301,15 @@ fn test_map_keys_to_array() { println(sarr) assert sarr == "['a', 'c']" } + +fn map_in_mut(mut m map[string]int) { + if 'one' in m { + m['one'] = 2 + } +} + +fn test_map_in_mut() { + mut m := {'one': 1} + map_in_mut(mut m) + assert m['one'] == 2 +} diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index 7a1eceebe9..5103040609 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -1912,6 +1912,9 @@ fn (mut g Gen) infix_expr(node ast.InfixExpr) { g.write('_IN_MAP(') g.expr(node.left) g.write(', ') + if node.right_type.is_ptr() { + g.write('*') + } g.expr(node.right) g.write(')') } else if right_sym.kind == .string {