type ArrayType = array<i32, 4>;

struct S {
  arr : array<i32, 4>,
}

fn foo() {
  let src : ArrayType = ArrayType();
  var dst : ArrayType;
  var dst_struct : S;
  var dst_array : array<ArrayType, 2>;
  let dst_ptr : ptr<function, ArrayType> = &(dst);
  let dst_struct_ptr : ptr<function, S> = &(dst_struct);
  let dst_array_ptr : ptr<function, array<ArrayType, 2>> = &(dst_array);
  dst_struct.arr = src;
  dst_array[1] = src;
  *(dst_ptr) = src;
  (*(dst_struct_ptr)).arr = src;
  (*(dst_array_ptr))[0] = src;
}