program main
  fn i32_second() -> i32
    index : i32
      array : (array i32 3)
        int 10 : i32
        int 20 : i32
        int 30 : i32
      int 1 : i32
  fn i64_local_pick() -> i64
    local let values : unit
      array : (array i64 3)
        i64 4 : i64
        i64 5 : i64
        i64 6 : i64
    index : i64
      var values : (array i64 3)
      int 2 : i32
  fn f64_third() -> f64
    index : f64
      array : (array f64 3)
        float 1.5 : f64
        float 2.5 : f64
        float 3.5 : f64
      int 2 : i32
  fn bool_local_pick() -> bool
    local let flags : unit
      array : (array bool 3)
        bool false : bool
        bool true : bool
        bool false : bool
    index : bool
      var flags : (array bool 3)
      int 1 : i32
  fn main() -> i32
    if : i32
      call bool_local_pick : bool
      call i32_second : i32
      int 0 : i32
  test "i32 direct scalar array index"
    binary = : bool
      call i32_second : i32
      int 20 : i32
  test "i64 local direct scalar array index"
    binary = : bool
      call i64_local_pick : i64
      i64 6 : i64
  test "f64 direct scalar array index"
    binary = : bool
      call f64_third : f64
      float 3.5 : f64
  test "bool local direct scalar array index"
    call bool_local_pick : bool
