compiler/tests/fixtures/runtime/library-shared-arena/main.ldn
1import core/arena
2import core/mem
3
4exercise: () -> (ok: bool) ! mem.out_of_memory =
5 ok = false
6 mut backing: [32]u8 = zeroed
7 mut space: arena.space = zeroed
8 memory := arena.over_unchecked(space, addr backing[0], 32)
9 address := try mem.allocate(memory, usize(4), usize(1))
10 address.val = 42
11 return when address.val <> 42
12 _ = mem.allocate(memory, usize(64), usize(1)) else (problem)
13 _ = problem
14 return when arena.used(memory) <> 4
15 arena.reset(memory)
16 again := try mem.allocate(memory, usize(32), usize(1))
17 ok = arena.used(memory) == 32 and again == address
18 return
19 end
20end exercise
21
22public main: () -> (code: i32) =
23 code = 1
24 ok := exercise() else false
25 if ok then
26 code = 42
27 end if
28end main