v2 / vlib / v / tests / structs / struct_field_default_shadowed_global_test.v
38 lines · 31 sloc · 508 bytes · f4f6f6e0f7dfdc14f720d1af0ec8e82bbffa5225
Raw
1@[has_globals]
2module main
3
4struct Game {
5mut:
6 object_id u32
7}
8
9__global (
10 g Game
11)
12
13struct StackGameObject {
14mut:
15 id u32 = g.object_id++
16}
17
18@[heap]
19struct HeapGameObject {
20mut:
21 id u32 = g.object_id++
22}
23
24fn reset_game_state() {
25 g = Game{}
26}
27
28fn test_stack_struct_field_default_can_use_shadowed_global() {
29 reset_game_state()
30 mut g := StackGameObject{}
31 assert g.id == 0
32}
33
34fn test_heap_struct_field_default_can_use_shadowed_global() {
35 reset_game_state()
36 mut g := HeapGameObject{}
37 assert g.id == 0
38}
39