Landin library reference source

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