Landin library reference source

compiler/tests/fixtures/runtime/library-shared-region/main.ldn

1import core/mem
2import core/region
3
4exercise: () -> (ok: bool) ! mem.out_of_memory =
5    ok = false
6    mut backing: [64]u8 = zeroed
7    mut inner := mem.arena_over_unchecked(addr backing[0], 64)
8    mut records: [1]region.allocation = zeroed
9    mut state := region.over(addr inner, records[0..<1])
10    address := try mem.allocate(state, usize(4), usize(1))
11    address.val = 42
12    return when address.val <> 42
13    _ = mem.allocate(state, usize(4), usize(1)) else (problem)
14        _ = problem
15        mem.free(state, address, usize(4))
16        ok = true
17        return
18    end
19end exercise
20
21public main: () -> (code: i32) =
22    code = 1
23    ok := exercise() else false
24    if ok then
25        code = 42
26    end if
27end main