diff options
Diffstat (limited to 'chromium/third_party/glslang/src/Test/switch.frag')
-rw-r--r-- | chromium/third_party/glslang/src/Test/switch.frag | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/chromium/third_party/glslang/src/Test/switch.frag b/chromium/third_party/glslang/src/Test/switch.frag new file mode 100644 index 00000000000..f0860fae810 --- /dev/null +++ b/chromium/third_party/glslang/src/Test/switch.frag @@ -0,0 +1,158 @@ +#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 +} |