xkslang/Test/switch.frag

159 строки
2.8 KiB
JavaScript

#version 300 es
precision highp float;
uniform int c, d;
in highp float x;
void main()
{
float f;
int a[2];
switch(f) { // ERROR
}
switch(a) { // ERROR
}
switch(c)
{
}
switch(c) // WARNING, not enough stuff after last label
{
case 2:
}
switch(c)
{
f = sin(x); // ERRROR
case 2:
f = cos(x);
break;
}
switch (c) {
default:
break;
case 1:
f = sin(x);
break;
case 2:
f = cos(x);
break;
default: // ERROR, 2nd default
f = tan(x);
}
switch (c) {
case 1:
f = sin(x);
break;
case 2:
switch (d) {
case 1:
f = x * x * x;
break;
case 2:
f = x * x;
break;
}
break;
default:
f = tan(x);
case 1: // ERROR, 2nd 'case 1'
break;
case 3.8: // ERROR, non-int
break;
case c: // ERROR, non-constant
break;
}
switch (c) { // a no-error normal switch
case 1:
f = sin(x);
break;
case 2:
switch (d) {
case 1:
f = x * x * x;
break;
case 2:
f = x * x;
break;
}
break;
default:
f = tan(x);
}
break; // ERROR
switch (c) {
case 1:
f = sin(x);
break;
case 2:
switch (d) {
case 1:
{
case 4: // ERROR
break;
}
f = x * x * x;
if (c < d) {
case 2: // ERROR
f = x * x;
}
if (d < c)
case 3: // ERROR
break;
}
break;
case 4:
f = tan(x);
if (f < 0.0)
default: // ERROR
break;
}
case 5: // ERROR
default: // ERROR
switch (0) {
default:
int onlyInSwitch = 0;
}
onlyInSwitch; // ERROR
switch (0) {
default:
int x; // WARNING (was "no statement" ERROR, but spec. changed because unclear what a statement is)
}
switch (c) {
case 1:
{
int nestedX;
break;
}
case 2:
nestedX; // ERROR
int nestedZ;
float a; // okay, hiding outer 'a'
break;
case 3:
int linearZ;
break;
break;
case 4:
int linearY = linearZ;
break;
case 5: // okay that branch bypassed an initializer
const int linearC = 4;
break;
case 6: // okay that branch bypassed an initializer
linearC;
}
nestedZ; // ERROR, no longer in scope
}