From bba81ffed6d41823a67f7863131d2e7d100e86ac Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 15 Apr 2026 06:06:51 +0300 Subject: [PATCH] checker: fix wrong alias management in generic methods (fixes #24012) --- ...ic_mut_method_reference_issue_24012_test.v | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 vlib/v/tests/aliases/alias_generic_mut_method_reference_issue_24012_test.v diff --git a/vlib/v/tests/aliases/alias_generic_mut_method_reference_issue_24012_test.v b/vlib/v/tests/aliases/alias_generic_mut_method_reference_issue_24012_test.v new file mode 100644 index 000000000..ded83f8ac --- /dev/null +++ b/vlib/v/tests/aliases/alias_generic_mut_method_reference_issue_24012_test.v @@ -0,0 +1,35 @@ +struct User { + name string + age int + height f64 +} + +type Users = map[string]User + +struct Decoder {} + +fn (mut decoder Decoder) decode_map[K, V](mut val map[K]V) ! { + _ = decoder + assert typeof[K]().idx == typeof[string]().idx + assert typeof[V]().idx == typeof[User]().idx + assert typeof(val).idx == typeof[map[string]User]().idx +} + +fn decode[T](source string) !T { + _ = source + mut decoder := Decoder{} + mut result := T{} + decoder.decode_value(mut result)! + return result +} + +fn (mut decoder Decoder) decode_value[T](mut val T) ! { + $if T.unaliased_typ is $map { + decoder.decode_map(mut val)! + } +} + +fn test_alias_generic_mut_method_reference_issue_24012() { + _ = decode[Users]('')! + _ = decode[map[string]User]('')! +} -- 2.39.5