slovo/tests/array-value-flow.surface.lower
2026-05-22 08:38:43 +02:00

75 lines
1.5 KiB
Plaintext

program main
fn make_values(base: i32) -> (array i32 3)
array i32
var base
binary +
var base
int 1
binary +
var base
int 2
fn first(values: (array i32 3)) -> i32
index
var values
int 0
fn at(values: (array i32 3), i: i32) -> i32
index
var values
var i
fn echo(values: (array i32 3)) -> (array i32 3)
var values
fn call_return_index(i: i32) -> i32
index
call make_values
int 10
var i
fn local_array_flow(i: i32) -> i32
local let values: (array i32 3)
call make_values
int 20
call at
var values
var i
fn parameter_local_copy(values: (array i32 3), i: i32) -> i32
local let copy: (array i32 3)
var values
index
var copy
var i
fn main() -> i32
call call_return_index
int 1
test "array parameter value flow"
binary =
call first
call make_values
int 7
int 7
test "array dynamic index"
binary =
call at
call make_values
int 4
int 2
int 6
test "array local call value flow"
binary =
call local_array_flow
int 1
int 21
test "array parameter local copy"
binary =
call parameter_local_copy
call make_values
int 40
int 2
int 42
test "array return call value flow"
binary =
index
call echo
call make_values
int 30
int 2
int 32