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

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