136 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
#version 300 es
 | 
						|
 | 
						|
uniform block {
 | 
						|
    mediump float f;
 | 
						|
} instanceName;
 | 
						|
 | 
						|
struct S {
 | 
						|
    int i;
 | 
						|
} s;
 | 
						|
 | 
						|
float a[5];
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    bool b;
 | 
						|
    float f;
 | 
						|
    int i;
 | 
						|
    uint u;
 | 
						|
    bvec3 b3;
 | 
						|
    vec3 v3;
 | 
						|
    ivec3 iv3;
 | 
						|
    uvec3 uv3;
 | 
						|
    vec4 v4;
 | 
						|
    ivec4 iv4;
 | 
						|
    uvec4 uv4;
 | 
						|
    mat2 m2;
 | 
						|
    mat4 m4;
 | 
						|
 | 
						|
    // These are all errors:
 | 
						|
    instanceName + instanceName;
 | 
						|
    s + s;
 | 
						|
    i + f;
 | 
						|
    u + f;
 | 
						|
    u + i;
 | 
						|
    iv3 *= iv4;
 | 
						|
    iv4 / uv4;
 | 
						|
    i - v3;
 | 
						|
    iv3 + uv3;
 | 
						|
    a * a;
 | 
						|
    b / b;
 | 
						|
 | 
						|
    f % f;
 | 
						|
    i % f;
 | 
						|
    f % u;
 | 
						|
    instanceName++;
 | 
						|
    ++s;
 | 
						|
    a--;
 | 
						|
    ++b3;
 | 
						|
 | 
						|
    iv3 < uv3;
 | 
						|
    m2 > m2;
 | 
						|
    m2 != m4;
 | 
						|
    i >= u;
 | 
						|
    a <= a;
 | 
						|
    b > b;
 | 
						|
 | 
						|
    b && b3;
 | 
						|
    b3 ^^ b3;
 | 
						|
    b3 || b;
 | 
						|
    i && i;
 | 
						|
    u || u;
 | 
						|
    m2 ^^ m2;
 | 
						|
 | 
						|
    !u;
 | 
						|
    !i;
 | 
						|
    !m2;
 | 
						|
    !v3;
 | 
						|
    !a;
 | 
						|
 | 
						|
    ~f;
 | 
						|
    ~m4;
 | 
						|
    ~v3;
 | 
						|
    ~a;
 | 
						|
    ~instanceName;
 | 
						|
 | 
						|
    i << iv3;
 | 
						|
    u << uv3;
 | 
						|
    i >> f;
 | 
						|
    f >> i;
 | 
						|
    m4 >> i;
 | 
						|
    a >> u;
 | 
						|
    iv3 >> iv4;
 | 
						|
 | 
						|
    i & u;    
 | 
						|
    u &= uv3;
 | 
						|
    i | uv3;
 | 
						|
    u & f;
 | 
						|
    m2 | m2;
 | 
						|
    s ^ s;
 | 
						|
    (f = f) = f;
 | 
						|
 | 
						|
    // These are all okay:
 | 
						|
    f * v4;
 | 
						|
    u + u;
 | 
						|
    uv4 / u;
 | 
						|
    iv3 -= iv3;
 | 
						|
    
 | 
						|
    i %= 3;
 | 
						|
    uv3 % 4u;
 | 
						|
    --m2;
 | 
						|
    iv4++;
 | 
						|
 | 
						|
    m4 != m4;
 | 
						|
    m2 == m2;
 | 
						|
    i <= i;
 | 
						|
    a == a;
 | 
						|
    s != s;
 | 
						|
 | 
						|
    b && b;
 | 
						|
    b || b;
 | 
						|
    b ^^ b;
 | 
						|
 | 
						|
    !b, uv3;
 | 
						|
 | 
						|
    ~i;
 | 
						|
    ~u;
 | 
						|
    ~uv3;
 | 
						|
    ~iv3;
 | 
						|
 | 
						|
    uv3 <<= i;
 | 
						|
    i >> i;
 | 
						|
    u << u;
 | 
						|
    iv3 >> iv3;
 | 
						|
 | 
						|
    i & i;
 | 
						|
    u | u;
 | 
						|
    iv3 ^ iv3;
 | 
						|
    u & uv3;
 | 
						|
    uv3 | u;
 | 
						|
    uv3 &= u;
 | 
						|
    int arr[0x222 & 0xf];
 | 
						|
    arr[1]; // size 2
 | 
						|
    int arr2[(uvec2(0, 0x2) | 0x1u).y];
 | 
						|
    arr2[2]; // size 3
 | 
						|
}
 |