fn deref_const() {
  var a : vec3<i32>;
  let p = &a;
  var b = (*p)[0];
  (*p)[0] = 42;
}

fn no_deref_const() {
  var a : vec3<i32>;
  let p = &a;
  var b = p[0];
  p[0] = 42;
}

fn deref_let() {
  var a : vec3<i32>;
  let p = &a;
  let i = 0;
  var b = (*p)[i];
  (*p)[0] = 42;
}

fn no_deref_let() {
  var a : vec3<i32>;
  let p = &a;
  let i = 0;
  var b = p[i];
  p[0] = 42;
}

fn deref_var() {
  var a : vec3<i32>;
  let p = &a;
  var i = 0;
  var b = (*p)[i];
  (*p)[0] = 42;
}

fn no_deref_var() {
  var a : vec3<i32>;
  let p = &a;
  let i = 0;
  var b = p[i];
  p[0] = 42;
}

@compute @workgroup_size(1)
fn main() {
  deref_const();
  no_deref_const();
  deref_let();
  no_deref_let();
  deref_var();
  no_deref_var();
}
