55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
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
|