uniform half4 colorGreen, colorRed;

bool switch_with_break_in_loop(int x) {
    int val = 0;
    switch (x) {
        case 1:  for (int i=0; i<10; ++i) { ++val; break; ++val; }
        default: ++val;
    }
    return val == 2;
}

bool switch_with_continue_in_loop(int x) {
    int val = 0;
    switch (x) {
        case 1:  for (int i=0; i<10; ++i) { ++val; continue; ++val; }
        default: ++val;
    }
    return val == 11;
}

bool loop_with_break_in_switch(int x) {
    int val = 0;
    for (int i=0; i<10; ++i) {
        switch (x) {
            case 1:  ++val; break;
            default: return false;
        }
        ++val;
    }
    return val == 20;
}

half4 main(float2 coords) {
    int x = int(colorGreen.g);
    return (switch_with_break_in_loop(x) &&
            switch_with_continue_in_loop(x) &&
            loop_with_break_in_switch(x)) ? colorGreen : colorRed;
}
