v2 / vlib / v / tests / comptime / comptime_eq_test.v
34 lines · 31 sloc · 452 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Abc {
2 id int
3 name string
4 letter string
5}
6
7fn join[T](mut old T, new T) {
8 $if T is $struct {
9 default := T{}
10 $for field in T.fields {
11 if new.$(field.name) != default.$(field.name) {
12 old.$(field.name) = new.$(field.name)
13 }
14 }
15 }
16}
17
18fn test_main() {
19 mut a := Abc{
20 name: 'Peter'
21 letter: 'a'
22 }
23 b := Abc{
24 id: 1
25 letter: 'b'
26 }
27 join(mut a, b)
28
29 assert a == Abc{
30 name: 'Peter'
31 id: 1
32 letter: 'b'
33 }
34}
35