1617a3babSopenharmony_ci#version 130 2617a3babSopenharmony_ci 3617a3babSopenharmony_cifloat gu[]; 4617a3babSopenharmony_cifloat g4[4]; 5617a3babSopenharmony_cifloat g5[5]; 6617a3babSopenharmony_ci 7617a3babSopenharmony_ciuniform int a; 8617a3babSopenharmony_ci 9617a3babSopenharmony_cifloat[4] foo(float a[5]) 10617a3babSopenharmony_ci{ 11617a3babSopenharmony_ci return float[](a[0], a[1], a[2], a[3]); 12617a3babSopenharmony_ci} 13617a3babSopenharmony_ci 14617a3babSopenharmony_civoid bar(float[5]) {} 15617a3babSopenharmony_ci 16617a3babSopenharmony_civoid main() 17617a3babSopenharmony_ci{ 18617a3babSopenharmony_ci { 19617a3babSopenharmony_ci float gu[2]; // okay, new scope 20617a3babSopenharmony_ci 21617a3babSopenharmony_ci gu[2] = 4.0; // ERROR, overflow 22617a3babSopenharmony_ci } 23617a3babSopenharmony_ci 24617a3babSopenharmony_ci gu[2] = 4.0; // okay 25617a3babSopenharmony_ci 26617a3babSopenharmony_ci gu[3] = 3.0; 27617a3babSopenharmony_ci gu[a] = 5.0; // ERROR 28617a3babSopenharmony_ci 29617a3babSopenharmony_ci g4 = foo(g5); 30617a3babSopenharmony_ci g5 = g4; // ERROR 31617a3babSopenharmony_ci gu = g4; // ERROR 32617a3babSopenharmony_ci 33617a3babSopenharmony_ci foo(gu); // ERROR 34617a3babSopenharmony_ci bar(g5); 35617a3babSopenharmony_ci 36617a3babSopenharmony_ci if (float[4](1.0, 2.0, 3.0, 4.0) == g4) 37617a3babSopenharmony_ci gu[0] = 2.0; 38617a3babSopenharmony_ci 39617a3babSopenharmony_ci float u[]; 40617a3babSopenharmony_ci u[2] = 3.0; // okay 41617a3babSopenharmony_ci float u[5]; 42617a3babSopenharmony_ci u[5] = 5.0; // ERROR 43617a3babSopenharmony_ci foo(u); // okay 44617a3babSopenharmony_ci 45617a3babSopenharmony_ci gl_FragData[1000] = vec4(1.0); // ERROR 46617a3babSopenharmony_ci gl_FragData[-1] = vec4(1.0); // ERROR 47617a3babSopenharmony_ci gl_FragData[3] = vec4(1.0); 48617a3babSopenharmony_ci 49617a3babSopenharmony_ci const int ca[] = int[](3, 2); 50617a3babSopenharmony_ci int sum = ca[0]; 51617a3babSopenharmony_ci sum += ca[1]; 52617a3babSopenharmony_ci sum += ca[2]; // ERROR 53617a3babSopenharmony_ci 54617a3babSopenharmony_ci const int ca3[3] = int[](3, 2); // ERROR 55617a3babSopenharmony_ci int ica[] = int[](3, 2); 56617a3babSopenharmony_ci int ica3[3] = int[](3, 2); // ERROR 57617a3babSopenharmony_ci ica[3.1] = 3; // ERROR 58617a3babSopenharmony_ci ica[u[1]] = 4; // ERROR 59617a3babSopenharmony_ci} 60617a3babSopenharmony_ci 61617a3babSopenharmony_ciint[] foo213234(); // ERROR 62617a3babSopenharmony_ciint foo234234(float[]); // ERROR 63617a3babSopenharmony_ciint foo234235(vec2[] v); // ERROR 64617a3babSopenharmony_ci 65617a3babSopenharmony_civec3 guns[]; 66617a3babSopenharmony_cifloat f = guns[7]; 67617a3babSopenharmony_ci 68617a3babSopenharmony_civoid foo() 69617a3babSopenharmony_ci{ 70617a3babSopenharmony_ci int uns[]; 71617a3babSopenharmony_ci uns[3] = 40; 72617a3babSopenharmony_ci uns[1] = 30; 73617a3babSopenharmony_ci guns[2] = vec3(2.4); 74617a3babSopenharmony_ci 75617a3babSopenharmony_ci float unsf[]; 76617a3babSopenharmony_ci bar(unsf); // ERROR 77617a3babSopenharmony_ci} 78617a3babSopenharmony_ci 79617a3babSopenharmony_cifloat[] foo2() // ERROR 80617a3babSopenharmony_ci{ 81617a3babSopenharmony_ci float f[]; 82617a3babSopenharmony_ci return f; 83617a3babSopenharmony_ci float g[9]; 84617a3babSopenharmony_ci return g; // ERROR 85617a3babSopenharmony_ci} 86617a3babSopenharmony_ci 87617a3babSopenharmony_cifloat gUnusedUnsized[]; 88617a3babSopenharmony_ci 89617a3babSopenharmony_civoid foo3() 90617a3babSopenharmony_ci{ 91617a3babSopenharmony_ci float resize1[]; 92617a3babSopenharmony_ci resize1[2] = 4.0; 93617a3babSopenharmony_ci resize1.length(); // ERROR 94617a3babSopenharmony_ci float resize1[3]; 95617a3babSopenharmony_ci resize1.length(); 96617a3babSopenharmony_ci 97617a3babSopenharmony_ci float resize2[]; 98617a3babSopenharmony_ci resize2[5] = 4.0; 99617a3babSopenharmony_ci float resize2[5]; // should be ERROR, but is not 100617a3babSopenharmony_ci resize2.length(); 101617a3babSopenharmony_ci resize2[5] = 4.0; // ERROR 102617a3babSopenharmony_ci} 103617a3babSopenharmony_ci 104617a3babSopenharmony_ciint[] i = int[](); // ERROR, need constructor arguments 105617a3babSopenharmony_cifloat emptyA[]; 106617a3babSopenharmony_cifloat b = vec4(emptyA); // ERROR, array can't be a constructor argument 107617a3babSopenharmony_ciuniform sampler2D s2d[]; 108617a3babSopenharmony_ci 109617a3babSopenharmony_civoid foo4() 110617a3babSopenharmony_ci{ 111617a3babSopenharmony_ci s2d[a]; // ERROR, can't variably index unsized array 112617a3babSopenharmony_ci float local[] = gUnusedUnsized; // ERROR, can initialize with runtime-sized array 113617a3babSopenharmony_ci} 114