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

// Local lets
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();
}

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