v2 / vlib / v / checker / tests / anon_missing_generic_err.vv
33 lines · 28 sloc · 510 bytes · 0b2b06df3c144e02a87ca73813e795454c86ff9f
Raw
1struct Test {
2 something string
3}
4
5struct Dependency {}
6
7struct Factory {
8 build fn () !
9}
10
11fn inject[T](mut serv T) ! {
12 $for field in T.fields {
13 if field.typ is string {
14 serv.$(field.name) = 'Hello world!'
15 }
16 }
17}
18
19fn use_factory[F, E](factory fn (dep F) !E) Factory {
20 return Factory{
21 build: fn [factory] [F]() ! {
22 mut dep := F{}
23 inject[F](mut dep)!
24 dump(factory(dep)!)
25 }
26 }
27}
28
29use_factory[Dependency, Test](fn (dep Dependency) !Test {
30 return Test{
31 something: 'daleks!'
32 }
33}).build()!
34