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

55 lines
1.2 KiB
Plaintext

program main
enum Color
variant Red
variant Blue
variant Green
fn make_palette() -> (array Color 3)
array Color
enum-variant Color.Red
enum-variant Color.Blue
enum-variant Color.Green
fn echo_palette(colors: (array Color 3)) -> (array Color 3)
var colors
fn at(colors: (array Color 3), i: i32) -> Color
index
var colors
var i
fn local_pick() -> Color
local let colors: (array Color 3)
call make_palette
index
var colors
int 1
fn main() -> i32
match
subject
call at
call make_palette
int 1
arm Color.Blue
int 0
arm Color.Red
int 1
arm Color.Green
int 1
test "enum array immediate index"
binary =
index
array Color
enum-variant Color.Red
enum-variant Color.Blue
enum-variant Color.Green
int 2
enum-variant Color.Green
test "enum array local index"
binary =
call local_pick
enum-variant Color.Blue
test "enum array param return dynamic index"
binary =
call at
call echo_palette
call make_palette
int 0
enum-variant Color.Red