v2 / vlib / v / tests / interfaces / interface_deep_embedded_fields_regression_test.v
45 lines · 38 sloc · 622 bytes · df9f1d48760ef7de1cf19ef1ee989d20c0fb9ff8
Raw
1interface ILevel {
2mut:
3 uid int
4 parent int
5}
6
7struct Level0 {
8mut:
9 uid int
10 parent int
11 x f32
12}
13
14struct Level1 {
15 Level0
16mut:
17 y f32
18}
19
20struct Level2 {
21 Level1
22mut:
23 z f32
24}
25
26type AliasLevel2 = Level2
27
28fn mutate_level(mut level ILevel) {
29 level.uid = 11
30 level.parent = 22
31}
32
33fn test_interface_cast_with_deeply_embedded_fields() {
34 mut level := Level2{}
35 mutate_level(mut level)
36 assert level.uid == 11
37 assert level.parent == 22
38}
39
40fn test_interface_cast_with_deeply_embedded_fields_through_alias() {
41 mut level := AliasLevel2{}
42 mutate_level(mut level)
43 assert level.uid == 11
44 assert level.parent == 22
45}
46