Skip to content

Commit 30c205e

Browse files
authored
cgen: fix printing map reference value (#17496)
1 parent 6f71923 commit 30c205e

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

vlib/v/gen/c/auto_str_methods.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,8 @@ fn (mut g Gen) gen_str_for_map(info ast.Map, styp string, str_fn_name string) {
759759
tmp_str := str_intp_rune('${elem_str_fn_name}(*(${val_styp}*)DenseArray_value(&m.key_values, i))')
760760
g.auto_str_funcs.writeln('\t\tstrings__Builder_write_string(&sb, ${tmp_str});')
761761
} else {
762-
g.auto_str_funcs.writeln('\t\tstrings__Builder_write_string(&sb, ${elem_str_fn_name}(*(${val_styp}*)DenseArray_value(&m.key_values, i)));')
762+
ptr_str := '*'.repeat(val_typ.nr_muls())
763+
g.auto_str_funcs.writeln('\t\tstrings__Builder_write_string(&sb, ${elem_str_fn_name}(*${ptr_str}(${val_styp}*)DenseArray_value(&m.key_values, i)));')
763764
}
764765
g.auto_str_funcs.writeln('\t\tif (i != m.key_values.len-1) {')
765766
g.auto_str_funcs.writeln('\t\t\tstrings__Builder_write_string(&sb, _SLIT(", "));')

vlib/v/tests/map_reference_value_test.v

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import datatypes
2+
13
struct Foo {
24
bar string
35
}
@@ -15,3 +17,9 @@ fn test_map_reference_value() {
1517

1618
assert true
1719
}
20+
21+
fn test_map_reference_value2() {
22+
mut m := map[string]&datatypes.Queue[i64]{}
23+
println('${m}')
24+
assert '${m}' == '{}'
25+
}

0 commit comments

Comments
 (0)