-
Notifications
You must be signed in to change notification settings - Fork 167
/
Copy pathstructs_32.py
45 lines (28 loc) · 978 Bytes
/
structs_32.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from lpython import packed, dataclass, field, i32, InOut
@packed
@dataclass
class inner_struct:
a: i32
@packed
@dataclass
class outer_struct:
b: inner_struct = field(default_factory=lambda: inner_struct(0))
def update_my_inner_struct(my_inner_struct: InOut[inner_struct]) -> None:
my_inner_struct.a = 99999
def update_my_outer_struct(my_outer_struct: InOut[outer_struct]) -> None:
my_outer_struct.b.a = 12345
def main() -> None:
my_outer_struct: outer_struct = outer_struct()
my_inner_struct: inner_struct = my_outer_struct.b
assert my_outer_struct.b.a == 0
my_outer_struct.b.a = 12345
assert my_outer_struct.b.a == 12345
my_outer_struct.b.a = 0
assert my_outer_struct.b.a == 0
update_my_outer_struct(my_outer_struct)
assert my_outer_struct.b.a == 12345
my_inner_struct.a = 1111
assert my_inner_struct.a == 1111
update_my_inner_struct(my_inner_struct)
assert my_inner_struct.a == 99999
main()