git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@26479 e7fa87d3-cd2b-0410-9028-fcbf551c1848
		
			
				
	
	
		
			158 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			158 lines
		
	
	
		
			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;
 | 
						|
    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
 | 
						|
}
 |