program main
  fn immediate_second() -> i32
    index : i32
      array : (array i32 3)
        int 10 : i32
        int 20 : i32
        int 30 : i32
      int 1 : i32
  fn local_sum() -> i32
    local let values : unit
      array : (array i32 3)
        int 4 : i32
        int 5 : i32
        int 6 : i32
    binary + : i32
      index : i32
        var values : (array i32 3)
        int 0 : i32
      index : i32
        var values : (array i32 3)
        int 2 : i32
  fn main() -> i32
    binary + : i32
      call immediate_second : i32
      call local_sum : i32
  test "immediate array index"
    binary = : bool
      call immediate_second : i32
      int 20 : i32
  test "array local index"
    local let values : unit
      array : (array i32 3)
        int 7 : i32
        int 8 : i32
        int 9 : i32
    binary = : bool
      index : i32
        var values : (array i32 3)
        int 2 : i32
      int 9 : i32
