From 3d652b3ff013ae15c7c67596be68dca806e657b5 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Wed, 11 Mar 2026 16:15:59 +0300 Subject: [PATCH] cgen: referenced values are displayed incorrectly (fixes #18440) --- .../generics/generics_struct_to_string_test.v | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/vlib/v/tests/generics/generics_struct_to_string_test.v b/vlib/v/tests/generics/generics_struct_to_string_test.v index 486fb4f4c..6533f119c 100644 --- a/vlib/v/tests/generics/generics_struct_to_string_test.v +++ b/vlib/v/tests/generics/generics_struct_to_string_test.v @@ -31,3 +31,50 @@ fn test_generic_struct_to_string() { println(ret) assert ret.contains('data: 234') } + +@[heap] +struct RefNode[T] { +pub mut: + value T +} + +struct RefList[T] { +pub mut: + node ?&RefNode[T] +} + +fn (mut l RefList[T]) add(value T) { + l.node = &RefNode[T]{ + value: value + } +} + +fn (l RefList[T]) array() []T { + mut a := []T{} + mut n := l.node or { return a } + a << n.value + return a +} + +@[heap] +struct ReferencedValue { + n int +} + +fn test_generic_struct_to_string_with_reference_values() { + mut list := RefList[&ReferencedValue]{} + list.add(&ReferencedValue{ + n: 5 + }) + assert list.array()[0].n == 5 + assert '${list}' == 'RefList[&ReferencedValue]{ + node: &Option(RefNode[&ReferencedValue]{ + value: &ReferencedValue{ + n: 5 + } + }) +}' + assert '${list.array()}' == '[&ReferencedValue{ + n: 5 +}]' +} -- 2.39.5