diff --git a/vlib/v/debug/tests/struct_heap.expect b/vlib/v/debug/tests/struct_heap.expect new file mode 100644 index 0000000000..f0c339d299 --- /dev/null +++ b/vlib/v/debug/tests/struct_heap.expect @@ -0,0 +1,10 @@ +#!/usr/bin/env expect +source "common.tcl" + +expect "Break on * main in ${test_file}:8" +expect "${test_file}:8 vdbg> " +send "p st\n" +expect "st = AStruct{\r\n a: 1\r\n} (main.AStruct)" +expect "${test_file}:8 vdbg> " +send "q\n" +expect eof diff --git a/vlib/v/debug/tests/struct_heap.vv b/vlib/v/debug/tests/struct_heap.vv new file mode 100644 index 0000000000..05df62cd64 --- /dev/null +++ b/vlib/v/debug/tests/struct_heap.vv @@ -0,0 +1,10 @@ +@[heap] +struct AStruct { + a int +} + +fn main() { + st := AStruct{1} + $dbg; + dump(st) +} diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index 20211e7285..4d57f903de 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -4527,6 +4527,8 @@ fn (mut g Gen) debugger_stmt(node ast.DebuggerStmt) { '&' } else if !str_method_expects_ptr && obj.typ.is_ptr() { '*'.repeat(obj.typ.nr_muls()) + } else if !str_method_expects_ptr && obj_sym.is_heap() { + '*' } else if obj.is_auto_heap && var_typ.is_ptr() && str_method_expects_ptr { '*' } else if !obj.is_auto_heap && var_typ.is_ptr() && str_method_expects_ptr {