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