/*#pragma settings NoInline*/

uniform half4 colorRed, colorGreen;

struct S { float x; int y; };

S returns_a_struct() {
    S s;
    s.x = 1;
    s.y = 2;
    return s;
}

float accepts_a_struct(S s) {
    return s.x + float(s.y);
}

void modifies_a_struct(inout S s) {
    s.x++;
    s.y++;
}

half4 main() {
    S s = returns_a_struct();
    float x = accepts_a_struct(s);
    modifies_a_struct(s);

    bool valid = (x == 3) && (s.x == 2) && (s.y == 3);
    return valid ? colorGreen : colorRed;
}
