struct MyStruct {
  f1 : f32;
};

type MyArray = array<f32, 10>;

fn ret_i32() -> i32 {
  return 1;
}

fn ret_u32() -> u32 {
  return 1u;
}

fn ret_f32() -> f32 {
  return 1.0;
}

fn ret_MyStruct() -> MyStruct {
  return MyStruct();
}

fn ret_MyArray() -> MyArray {
  return MyArray();
}

fn let_decls() {
  let v1 = 1;
  let v2 = 1u;
  let v3 = 1.0;
  let v4 = vec3<i32>(1, 1, 1);
  let v5 = vec3<u32>(1u, 1u, 1u);
  let v6 = vec3<f32>(1.0, 1.0, 1.0);
  let v7 = mat3x3<f32>(v6, v6, v6);
  let v8 = MyStruct(1.0);
  let v9 = MyArray();
  let v10 = ret_i32();
  let v11 = ret_u32();
  let v12 = ret_f32();
  let v13 = ret_MyStruct();
  let v14 = ret_MyStruct();
  let v15 = ret_MyArray();
}

[[stage(fragment)]]
fn main() -> [[location(0)]] vec4<f32> {
  return vec4<f32>(0.0, 0.0, 0.0, 0.0);
}