From ed5fdd0b79196999a3d57f21ad2bda9672d4bbbe Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 21 Apr 2026 15:32:14 +0300 Subject: [PATCH] checker: fix checker checks wrapped generic type while cgen uses incorrect type (fixes #20664) --- .../generics_fn_callback_wrapped_arg_err.out | 7 +++++++ .../tests/generics_fn_callback_wrapped_arg_err.vv | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.out create mode 100644 vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.vv diff --git a/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.out b/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.out new file mode 100644 index 000000000..edee6362c --- /dev/null +++ b/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.out @@ -0,0 +1,7 @@ +vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.vv:6:11: error: cannot use `Default[Foo]` as `Foo` in argument 1 to `g` + 4 | + 5 | fn f[T](g fn (x T) int) { + 6 | assert g(Default[T]{}) == 42 + | ~~~~~~~~~~~~ + 7 | } + 8 | diff --git a/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.vv b/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.vv new file mode 100644 index 000000000..ce5242f11 --- /dev/null +++ b/vlib/v/checker/tests/generics_fn_callback_wrapped_arg_err.vv @@ -0,0 +1,15 @@ +struct Default[T] { + v T +} + +fn f[T](g fn (x T) int) { + assert g(Default[T]{}) == 42 +} + +struct Foo { + v int = 42 +} + +fn main() { + f[Foo](|foo| foo.v) +} -- 2.39.5