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;
}
