uniform half4 colorGreen;

// GLSL 4.1 and below enforce that qualifiers must occur in a strict order. (See "Order of
// Qualifiers" in the GLSL documentation.) GLSL 4.2 and above no longer enforce order; SkSL also
// does not. However, SkSL will always emit qualifiers in the order expected by GLSL 4.1.

// These qualifiers are reversed from the expected order, but SkSL should compile and run anyway.
noinline void const_after_in(in const vec2 x) {}
noinline void inout_after_high_precision(highp inout vec2 x) {}
noinline void out_after_high_precision(highp out vec2 x) {}

vec4 main(vec2 coords) {
    const_after_in(coords);
    inout_after_high_precision(coords);
    out_after_high_precision(coords);

    return colorGreen;
}
