| #version 130 |
| |
| float gu[]; |
| float g4[4]; |
| float g5[5]; |
| |
| uniform int a; |
| |
| float[4] foo(float a[5]) |
| { |
| return float[](a[0], a[1], a[2], a[3]); |
| } |
| |
| void bar(float[5]) {} |
| |
| void main() |
| { |
| { |
| float gu[2]; // okay, new scope |
| |
| gu[2] = 4.0; // ERROR, overflow |
| } |
| |
| gu[2] = 4.0; // okay |
| |
| gu[3] = 3.0; |
| gu[a] = 5.0; // ERROR |
| |
| g4 = foo(g5); |
| g5 = g4; // ERROR |
| gu = g4; // ERROR |
| |
| foo(gu); // ERROR |
| bar(g5); |
| |
| if (float[4](1.0, 2.0, 3.0, 4.0) == g4) |
| gu[0] = 2.0; |
| |
| float u[]; |
| u[2] = 3.0; // okay |
| float u[5]; |
| u[5] = 5.0; // ERROR |
| foo(u); // okay |
| |
| gl_FragData[1000] = vec4(1.0); // ERROR |
| gl_FragData[-1] = vec4(1.0); // ERROR |
| gl_FragData[3] = vec4(1.0); |
| |
| const int ca[] = int[](3, 2); |
| int sum = ca[0]; |
| sum += ca[1]; |
| sum += ca[2]; // ERROR |
| |
| const int ca3[3] = int[](3, 2); // ERROR |
| int ica[] = int[](3, 2); |
| int ica3[3] = int[](3, 2); // ERROR |
| ica[3.1] = 3; // ERROR |
| ica[u[1]] = 4; // ERROR |
| } |
| |
| int[] foo213234(); // ERROR |
| int foo234234(float[]); // ERROR |
| int foo234235(vec2[] v); // ERROR |
| |
| vec3 guns[]; |
| float f = guns[7]; |
| |
| void foo() |
| { |
| int uns[]; |
| uns[3] = 40; |
| uns[1] = 30; |
| guns[2] = vec3(2.4); |
| |
| float unsf[]; |
| bar(unsf); // ERROR |
| } |
| |
| float[] foo2() // ERROR |
| { |
| float f[]; |
| return f; |
| float g[9]; |
| return g; // ERROR |
| } |
| |
| float gUnusedUnsized[]; |
| |
| void foo3() |
| { |
| float resize1[]; |
| resize1[2] = 4.0; |
| resize1.length(); // ERROR |
| float resize1[3]; |
| resize1.length(); |
| |
| float resize2[]; |
| resize2[5] = 4.0; |
| float resize2[5]; // should be ERROR, but is not |
| resize2.length(); |
| resize2[5] = 4.0; // ERROR |
| } |
| |
| int[] i = int[](); // ERROR, need constructor arguments |
| float emptyA[];
|
| float b = vec4(emptyA); // ERROR, array can't be a constructor argument
|