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