There a couple functional problems, which when reduced down also led to some good simplifications and rationalization. So, this commit: - corrects "mixed" functionality: int[A] f[B] -> f[B][A] - correct multi-identifier decls: int[A] f[B], g[C] -> f and g are independently sized. - increases symmetry between different places in the code that do this - makes fewer ways to do the same thing; several methods are just gone now - makes more clear when something is copied or shared
		
			
				
	
	
		
			31 lines
		
	
	
		
			436 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			436 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
#version 450
 | 
						|
 | 
						|
struct S {
 | 
						|
    int[3] a[2], b[5];
 | 
						|
};
 | 
						|
 | 
						|
S s;
 | 
						|
 | 
						|
int[5] c[4], d[8];
 | 
						|
int[9] e[], f[];
 | 
						|
int e[11][9];
 | 
						|
int f[13][9];
 | 
						|
 | 
						|
int[14] g[], h[];
 | 
						|
 | 
						|
int [14][15][6] foo(int[6] p[14][15]) { return p; }
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    g[3];
 | 
						|
    h[2];
 | 
						|
}
 | 
						|
 | 
						|
float[4][3][2] bar() { float[3][2] a[4]; return a; }
 | 
						|
 | 
						|
in inbname {
 | 
						|
    float[7] f[8][9];
 | 
						|
} inbinst[4][5][6];
 | 
						|
 | 
						|
float[3][2] barm[4]() { float[3][2] a[4]; return a; }  // ERROR
 |