slovo/tests/vec-i32.surface.lower
2026-05-22 08:38:43 +02:00

77 lines
1.6 KiB
Plaintext

program main
fn empty_values() -> (vec i32)
call std.vec.i32.empty
fn pair(base: i32) -> (vec i32)
local let values: (vec i32)
call std.vec.i32.empty
local let first: (vec i32)
call std.vec.i32.append
var values
var base
call std.vec.i32.append
var first
binary +
var base
int 1
fn echo(values: (vec i32)) -> (vec i32)
var values
fn length(values: (vec i32)) -> i32
call std.vec.i32.len
var values
fn at(values: (vec i32), i: i32) -> i32
call std.vec.i32.index
var values
var i
fn call_return_len() -> i32
call std.vec.i32.len
call echo
call pair
int 20
fn original_len_after_append() -> i32
local let values: (vec i32)
call std.vec.i32.empty
local let appended: (vec i32)
call std.vec.i32.append
var values
int 1
call std.vec.i32.len
var values
fn main() -> i32
call std.io.print_i32
call call_return_len
call at
call pair
int 40
int 1
test "vec i32 empty length"
binary =
call std.vec.i32.len
call empty_values
int 0
test "vec i32 append length"
binary =
call length
call pair
int 40
int 2
test "vec i32 index"
binary =
call at
call pair
int 40
int 1
int 41
test "vec i32 append is immutable"
binary =
call original_len_after_append
int 0
test "vec i32 equality"
binary =
call pair
int 5
call std.vec.i32.append
call std.vec.i32.append
call std.vec.i32.empty
int 5
int 6