| 1 | struct Foo[T] { |
| 2 | foo T |
| 3 | } |
| 4 | |
| 5 | struct Bar[T] { |
| 6 | mut: |
| 7 | foos []Foo[T] |
| 8 | } |
| 9 | |
| 10 | fn (mut b Bar[T]) add(v T) { |
| 11 | b.foos << Foo[T]{ |
| 12 | foo: v |
| 13 | } |
| 14 | } |
| 15 | |
| 16 | fn test_nested_generics_struct_init() { |
| 17 | mut bar1 := Bar[string]{} |
| 18 | bar1.add('bar') |
| 19 | println(bar1) |
| 20 | |
| 21 | result1 := '${bar1}' |
| 22 | assert result1.contains('Bar[string]{') |
| 23 | assert result1.contains('foos: [Foo[string]{') |
| 24 | assert result1.contains("foo: 'bar'") |
| 25 | |
| 26 | mut bar2 := Bar[int]{} |
| 27 | bar2.add(22) |
| 28 | println(bar2) |
| 29 | |
| 30 | result2 := '${bar2}' |
| 31 | assert result2.contains('Bar[int]{') |
| 32 | assert result2.contains('foos: [Foo[int]{') |
| 33 | assert result2.contains('foo: 22') |
| 34 | |
| 35 | mut bar3 := Bar[f64]{} |
| 36 | bar3.add(2.2) |
| 37 | println(bar3) |
| 38 | |
| 39 | result3 := '${bar3}' |
| 40 | assert result3.contains('Bar[f64]{') |
| 41 | assert result3.contains('foos: [Foo[f64]{') |
| 42 | assert result3.contains('foo: 2.2') |
| 43 | |
| 44 | mut bar4 := Bar[bool]{} |
| 45 | bar4.add(true) |
| 46 | println(bar4) |
| 47 | |
| 48 | result4 := '${bar4}' |
| 49 | assert result4.contains('Bar[bool]{') |
| 50 | assert result4.contains('foos: [Foo[bool]{') |
| 51 | assert result4.contains('foo: true') |
| 52 | } |
| 53 | |