#version 100 int ga, gb; float f; uniform sampler2D fsa[3]; uniform float fua[10]; attribute mat3 am3; attribute vec2 av2; varying vec4 va[4]; const mat2 m2 = mat2(1.0); const vec3 v3 = vec3(2.0); void foo(inout float a) {} int bar() { return 1; } void main() { while (ga < gb) { } do { } while (false); for ( ; ; ); // ERROR for ( ; ga==gb; ); // ERROR for ( ; ; f++); // ERROR for ( ga = 0; ; ); // ERROR for ( bool a = false; ; ); // ERROR for (float a = 0.0; a == sin(f); ); // ERROR for ( int a = 0; a < 10; a *= 2); // ERROR for ( int a = 0; a <= 20; a++) --a; // ERROR for ( int a = 0; a <= 20; a++) { if (ga==0) a = 4; } // ERROR for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a != 20.0; a -= 2.0) { if (ga==0) ga = 4; } for (float a = 0.0; a == 20.0; a--) for (float a = 0.0; a == 20.0; a--); // two different 'a's, everything okay for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a <= 20.0; a += 2.0); for (float a = 0.0; a > 2.0 * 20.0; a += v3.y); for (float a = 0.0; a >= 20.0; a += 2.0) foo(a); // ERROR int ia[9]; fsa[ga]; // ERROR fua[ga]; am3[ga]; // ERROR av2[ga]; // ERROR va[2+ga]; // ERROR m2[ga]; // ERROR v3[ga/2]; // ERROR ia[ga]; // ERROR for (int a = 3; a >= 0; a--) { fsa[a]; fua[a+2]; am3[3*a]; av2[3*a]; va[a-1]; m2[a/2]; v3[a]; ia[a]; ia[bar()]; // ERROR } fsa[2]; fua[3]; am3[2]; av2[1]; va[1]; m2[1]; v3[1]; ia[3]; }