From 7be9963a41e6ee4bf7b0cad6aed3fcd8fbc01faf Mon Sep 17 00:00:00 2001 From: yuyi Date: Tue, 9 Aug 2022 12:46:55 +0800 Subject: [PATCH] checker: fix dumping generic fn mut argument (#15384) --- vlib/v/checker/checker.v | 5 +++-- vlib/v/tests/inout/dump_generic_fn_mut_arg.out | 1 + vlib/v/tests/inout/dump_generic_fn_mut_arg.vv | 12 ++++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 vlib/v/tests/inout/dump_generic_fn_mut_arg.out create mode 100644 vlib/v/tests/inout/dump_generic_fn_mut_arg.vv diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index d724257b53..765ac9d34a 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -2168,8 +2168,9 @@ pub fn (mut c Checker) expr(node_ ast.Expr) ast.Type { return ast.void_type } - tsym := c.table.sym(node.expr_type) - c.table.dumps[int(node.expr_type)] = tsym.cname + unwrapped_expr_type := c.unwrap_generic(node.expr_type) + tsym := c.table.sym(unwrapped_expr_type) + c.table.dumps[int(unwrapped_expr_type)] = tsym.cname node.cname = tsym.cname return node.expr_type } diff --git a/vlib/v/tests/inout/dump_generic_fn_mut_arg.out b/vlib/v/tests/inout/dump_generic_fn_mut_arg.out new file mode 100644 index 0000000000..e8e6b5b7e7 --- /dev/null +++ b/vlib/v/tests/inout/dump_generic_fn_mut_arg.out @@ -0,0 +1 @@ +[vlib/v/tests/inout/dump_generic_fn_mut_arg.vv:11] t: &Reptile{} diff --git a/vlib/v/tests/inout/dump_generic_fn_mut_arg.vv b/vlib/v/tests/inout/dump_generic_fn_mut_arg.vv new file mode 100644 index 0000000000..35478ff40d --- /dev/null +++ b/vlib/v/tests/inout/dump_generic_fn_mut_arg.vv @@ -0,0 +1,12 @@ +module main + +pub struct Reptile {} + +fn main() { + mut r := Reptile{} + do(mut r) +} + +pub fn do(mut t T) { + dump(t) +}