From 2a6be0f9833719205773e76ab0157581b2344f22 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 15 Apr 2026 15:34:21 +0300 Subject: [PATCH] checker: fix wrong alias management in generic methods (fixes #24011) --- ...s_generic_mut_reference_issue_24011_test.v | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 vlib/v/tests/aliases/alias_generic_mut_reference_issue_24011_test.v diff --git a/vlib/v/tests/aliases/alias_generic_mut_reference_issue_24011_test.v b/vlib/v/tests/aliases/alias_generic_mut_reference_issue_24011_test.v new file mode 100644 index 000000000..926df68bd --- /dev/null +++ b/vlib/v/tests/aliases/alias_generic_mut_reference_issue_24011_test.v @@ -0,0 +1,33 @@ +pub 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) { + assert typeof(val).idx == typeof[map[string]User]().idx +} + +fn (mut decoder Decoder) decode_value[T](mut val T) { + $if T.unaliased_typ is $map { + decoder.decode_map(mut val) + } +} + +pub fn decode[T]() T { + mut decoder := Decoder{} + mut result := T{} + decoder.decode_value(mut result) + return result +} + +fn test_alias_generic_mut_reference_issue_24011() { + users := decode[Users]() + + assert typeof(users).idx == typeof[Users]().idx + assert users == Users(map[string]User{}) +} -- 2.39.5