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 variables
fn var_decls() {
    var v1 = 1;
    var v2 = 1u;
    var v3 = 1.0;

    var v4 = vec3<i32>(1, 1, 1);
    var v5 = vec3<u32>(1u, 1u, 1u);
    var v6 = vec3<f32>(1.0, 1.0, 1.0);

    var v7 = mat3x3<f32>(v6, v6, v6);

    var v8 = MyStruct(1.0);
    var v9 = MyArray();

    var v10 = ret_i32();
    var v11 = ret_u32();
    var v12 = ret_f32();
    var v13 = ret_MyStruct();
    var v14 = ret_MyStruct();
    var v15 = ret_MyArray();
}

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