Landin library reference source

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

1import core/mem
2import core/vec
3
4exercise: () -> (ok: bool) ! mem.out_of_memory | mem.empty | mem.out_of_bounds =
5    ok = false
6    mut backing: [256]u8 = zeroed
7    mut state := mem.arena_over_unchecked(addr backing[0], 256)
8    mut values := vec.new(item: i32)
9    try vec.push(values, state, i32(41))
10    return when vec.length(values) <> 1
11    slot: ptr mut i32 = try vec.at(values, usize(0))
12    slot.val = 42
13    last: i32 = try vec.last(values)
14    return when last <> 42
15    removed := try vec.pop(values)
16    return when removed <> 42
17    _ = vec.pop(values) else (problem)
18        ok = problem == mem.empty and vec.length(values) == 0
19        return
20    end
21end exercise
22
23public main: () -> (code: i32) =
24    code = 1
25    ok := exercise() else false
26    if ok then
27        code = 42
28    end if
29end main