37 lines
528 B
V
37 lines
528 B
V
struct Outer<T> {
|
|
mut:
|
|
inner Inner<T>
|
|
}
|
|
|
|
struct Inner<T> {
|
|
val T
|
|
}
|
|
|
|
fn (mut i Inner<T>) next<S>(input S) f64 {
|
|
$if S is f32 {
|
|
return 32
|
|
} $else {
|
|
panic('"$S.name" is not supported')
|
|
return 0
|
|
}
|
|
}
|
|
|
|
fn test_generics_method_on_nested_struct() {
|
|
mut outer := Outer<f64>{
|
|
inner: Inner<f64>{
|
|
val: 1.1
|
|
}
|
|
}
|
|
r1 := outer.inner.next<f32>(99.0)
|
|
println(r1)
|
|
assert r1 == 32.0
|
|
|
|
r2 := outer.inner.next<f64, f32>(99.0)
|
|
println(r2)
|
|
assert r2 == 32.0
|
|
|
|
r3 := outer.inner.next(f32(99.0))
|
|
println(r3)
|
|
assert r3 == 32.0
|
|
}
|