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