v2 / vlib / v / tests / builtin_maps / map_generic_call_test.v
36 lines · 32 sloc · 497 bytes · d7a60642ce843d3a45f1f52a6d315f8189bccb9f
Raw
1struct FooParams[K, V] {
2 k K
3 v V
4 k2 K
5}
6
7struct Foo[K, V] {
8 k K
9mut:
10 m map[K]V
11}
12
13fn new_foo[K, V](params FooParams[K, V]) Foo[K, V] {
14 return Foo[K, V]{
15 k: params.k2
16 m: {
17 params.k: params.v
18 }
19 }
20}
21
22fn (mut p Foo[K, V]) f() {
23 mut y := p.m.move()
24 y.clear()
25 y.reserve(6)
26 y.delete(p.k)
27 assert y.keys().len == 0
28 assert y.values().len == 0
29 assert y.clone().len == 0
30 unsafe { y.free() }
31}
32
33fn test_main() {
34 mut foo := new_foo(FooParams{ k: 'abc', v: 42, k2: 'def' })
35 foo.f()
36}
37