(module main) (enum Color Red Blue Green) (struct Pixel (x i32) (label string) (color Color)) (fn make_pixels ((head string)) -> (array Pixel 3) (array Pixel (Pixel (x 1) (label head) (color (Color.Red))) (Pixel (x 2) (label "mid") (color (Color.Blue))) (Pixel (x 3) (label "tail") (color (Color.Green))))) (fn echo_pixels ((pixels (array Pixel 3))) -> (array Pixel 3) pixels) (fn at ((pixels (array Pixel 3)) (i i32)) -> Pixel (index pixels i)) (fn first_label ((head string)) -> string (. (at (make_pixels head) 0) label)) (fn last_color ((head string)) -> Color (. (index (echo_pixels (make_pixels head)) 2) color)) (test "struct array string field access" (= (first_label "head") "head")) (test "struct array nested enum field access" (= (last_color "head") (Color.Green))) (test "struct array local param return call flow" (= (. (at (echo_pixels (make_pixels "sun")) 1) x) 2)) (fn main () -> i32 (match (last_color "head") ((Color.Green) 0) ((Color.Red) 1) ((Color.Blue) 1)))