type ArrayType = [[stride(16)]] array<i32, 4>;

[[block]]
struct S {
  arr : ArrayType;
};

var<private> src_private : ArrayType;

var<workgroup> src_workgroup : ArrayType;

[[group(0), binding(0)]] var<uniform> src_uniform : S;

[[group(0), binding(1)]] var<storage, read_write> src_storage : S;

var<private> dst : ArrayType;

var<private> dst_nested : array<array<array<i32, 2>, 3>, 4>;

fn ret_arr() -> ArrayType {
  return ArrayType();
}

fn ret_struct_arr() -> S {
  return S();
}

fn foo(src_param : ArrayType) {
  var src_function : ArrayType;
  dst = ArrayType(1, 2, 3, 3);
  dst = src_param;
  dst = ret_arr();
  let src_let : ArrayType = ArrayType();
  dst = src_let;
  dst = src_function;
  dst = src_private;
  dst = src_workgroup;
  dst = ret_struct_arr().arr;
  dst = src_uniform.arr;
  dst = src_storage.arr;
  var src_nested : array<array<array<i32, 2>, 3>, 4>;
  dst_nested = src_nested;
}
