From c644b0cac5bead7887903c16b9f69c3a4eb49bb1 Mon Sep 17 00:00:00 2001 From: CreeperFace <165158232+dy-tea@users.noreply.github.com> Date: Tue, 23 Dec 2025 10:17:43 +0000 Subject: [PATCH] cgen: handle CallExpr in dumpexpr (fix #26084) (#26087) --- vlib/v/gen/c/dumpexpr.v | 3 +++ vlib/v/tests/generics/generic_dump_test.v | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 vlib/v/tests/generics/generic_dump_test.v diff --git a/vlib/v/gen/c/dumpexpr.v b/vlib/v/gen/c/dumpexpr.v index 304866047..9db51740c 100644 --- a/vlib/v/gen/c/dumpexpr.v +++ b/vlib/v/gen/c/dumpexpr.v @@ -30,6 +30,9 @@ fn (mut g Gen) dump_expr(node ast.DumpExpr) { name = g.styp(g.unwrap_generic(node.expr.info.typ.clear_flags(.shared_f, .result))).replace('*', '') } + } else if node.expr is ast.CallExpr { + name = g.styp(g.unwrap_generic(expr_type.clear_flags(.shared_f, .result))).replace('*', + '') } } // var.$(field.name) diff --git a/vlib/v/tests/generics/generic_dump_test.v b/vlib/v/tests/generics/generic_dump_test.v new file mode 100644 index 000000000..c52d48205 --- /dev/null +++ b/vlib/v/tests/generics/generic_dump_test.v @@ -0,0 +1,18 @@ +struct Slice { + pointer &u8 = unsafe { nil } + len int +} + +pub fn decode_slice[T]() !T { + return T{} +} + +@[manualfree] +pub fn decode[T]() ! { + dump(decode_slice[T]()!) +} + +fn test_main() { + decode[Slice]()! + decode[[3]int]()! +} -- 2.39.5