v/vlib/v/tests/generics_method_on_nested_s...

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
}