diff --git a/vlib/builtin/map_test.v b/vlib/builtin/map_test.v index f68fa5391a..1bbd0deda2 100644 --- a/vlib/builtin/map_test.v +++ b/vlib/builtin/map_test.v @@ -313,3 +313,35 @@ fn test_map_in_mut() { map_in_mut(mut m) assert m['one'] == 2 } + +fn mut_map_with_relation_op_in_fn(mut m map[string]int) { + if m['one'] == 1 { + m['three'] = 3 + } + if m['two'] != 1 { + m['four'] = 4 + } + if m['one'] > 0 { + m['five'] = 5 + } + if m['one'] < 2 { + m['six'] = 6 + } + if m['two'] >= 2 { + m['seven'] = 7 + } + if m['two'] <= 2 { + m['eight'] = 8 + } +} + +fn test_mut_map_with_relation_op_in_fn() { + mut m := {'one':1, 'two':2} + mut_map_with_relation_op_in_fn(mut m) + assert 'three' in m + assert 'four' in m + assert 'five' in m + assert 'six' in m + assert 'seven' in m + assert 'eight' in m +} diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index d15390835a..a93f528864 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -2360,6 +2360,9 @@ fn (mut g Gen) index_expr(node ast.IndexExpr) { } else { zero := g.type_default(info.value_type) g.write('(*($elem_type_str*)map_get(') + if node.left_type.is_ptr() { + g.write('*') + } g.expr(node.left) g.write(', ') g.expr(node.index)