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