1617a3babSopenharmony_ci#version 430 2617a3babSopenharmony_ci 3617a3babSopenharmony_cifloat[4][5][6] many[1][2][3]; 4617a3babSopenharmony_ci 5617a3babSopenharmony_cifloat gu[][7]; 6617a3babSopenharmony_cifloat gimp[][]; // ERROR, implicit inner 7617a3babSopenharmony_cifloat g4[4][7]; 8617a3babSopenharmony_cifloat g5[5][7]; 9617a3babSopenharmony_ci 10617a3babSopenharmony_cifloat[4][7] foo(float a[5][7]) 11617a3babSopenharmony_ci{ 12617a3babSopenharmony_ci float r[7]; 13617a3babSopenharmony_ci r = a[2]; 14617a3babSopenharmony_ci float[](a[0], a[1], r, a[3]); // ERROR, too few dims 15617a3babSopenharmony_ci float[4][7][4](a[0], a[1], r, a[3]); // ERROR, too many dims 16617a3babSopenharmony_ci return float[4][7](a[0], a[1], r, a[3]); 17617a3babSopenharmony_ci return float[][](a[0], a[1], r, a[3]); 18617a3babSopenharmony_ci return float[][7](a[0], a[1], a[2], a[3]); 19617a3babSopenharmony_ci} 20617a3babSopenharmony_ci 21617a3babSopenharmony_civoid bar(float[5][7]) {} 22617a3babSopenharmony_ci 23617a3babSopenharmony_civoid main() 24617a3babSopenharmony_ci{ 25617a3babSopenharmony_ci { 26617a3babSopenharmony_ci float gu[3][4][2]; 27617a3babSopenharmony_ci 28617a3babSopenharmony_ci gu[2][4][1] = 4.0; // ERROR, overflow 29617a3babSopenharmony_ci } 30617a3babSopenharmony_ci vec4 ca4[3][2] = vec4[][](vec4[2](vec4(0.0), vec4(1.0)), 31617a3babSopenharmony_ci vec4[2](vec4(0.0), vec4(1.0)), 32617a3babSopenharmony_ci vec4[2](vec4(0.0), vec4(1.0))); 33617a3babSopenharmony_ci vec4 caim[][2] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), 34617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 35617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0))); 36617a3babSopenharmony_ci vec4 caim2[][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), 37617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 38617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0))); 39617a3babSopenharmony_ci vec4 caim3[3][] = vec4[][](vec4[2](vec4(4.0), vec4(2.0)), 40617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 41617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0))); 42617a3babSopenharmony_ci 43617a3babSopenharmony_ci vec4 a4[3][2] = {vec4[](vec4(0.0), vec4(1.0)), 44617a3babSopenharmony_ci vec4[2](vec4(0.0), vec4(1.0)), 45617a3babSopenharmony_ci vec4[2](vec4(0.0), vec4(1.0)) }; 46617a3babSopenharmony_ci vec4 aim[][2] = {vec4[2](vec4(4.0), vec4(2.0)), 47617a3babSopenharmony_ci vec4[](vec4(4.0), vec4(2.0)), 48617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)) }; 49617a3babSopenharmony_ci vec4 aim2[][] = {vec4[2](vec4(4.0), vec4(2.0)), 50617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 51617a3babSopenharmony_ci vec4[](vec4(4.0), vec4(2.0)) }; 52617a3babSopenharmony_ci vec4 aim3[3][] = {vec4[2](vec4(4.0), vec4(2.0)), 53617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 54617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)) }; 55617a3babSopenharmony_ci 56617a3babSopenharmony_ci vec4 bad2[3][] = {vec4[2](vec4(4.0), vec4(2.0)), // ERROR 57617a3babSopenharmony_ci vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)), 58617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)) }; 59617a3babSopenharmony_ci 60617a3babSopenharmony_ci vec4 bad3[3][] = {vec4[3](vec4(4.0), vec4(2.0), vec4(5.0)), // ERROR 61617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 62617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)) }; 63617a3babSopenharmony_ci 64617a3babSopenharmony_ci vec4 bad4[4][] = {vec4[2](vec4(4.0), vec4(2.0)), // ERROR 65617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)), 66617a3babSopenharmony_ci vec4[2](vec4(4.0), vec4(2.0)) }; 67617a3babSopenharmony_ci 68617a3babSopenharmony_ci 69617a3babSopenharmony_ci g4 = foo(g5); 70617a3babSopenharmony_ci g5 = g4; // ERROR, wrong types 71617a3babSopenharmony_ci gu = g4; // ERROR, not yet sized 72617a3babSopenharmony_ci 73617a3babSopenharmony_ci foo(gu); // ERROR, not yet sized 74617a3babSopenharmony_ci bar(g5); 75617a3babSopenharmony_ci 76617a3babSopenharmony_ci if (foo(g5) == g4) 77617a3babSopenharmony_ci ; 78617a3babSopenharmony_ci if (foo(g5) == g5) // ERROR, different types 79617a3babSopenharmony_ci ; 80617a3babSopenharmony_ci 81617a3babSopenharmony_ci float u[][7]; 82617a3babSopenharmony_ci u[2][2] = 3.0; 83617a3babSopenharmony_ci float u[5][7]; 84617a3babSopenharmony_ci u[5][2] = 5.0; // ERROR 85617a3babSopenharmony_ci foo(u); 86617a3babSopenharmony_ci} 87617a3babSopenharmony_ci 88617a3babSopenharmony_civoid foo3() 89617a3babSopenharmony_ci{ 90617a3babSopenharmony_ci float resize1[][5][7]; 91617a3babSopenharmony_ci resize1.length(); // ERROR 92617a3babSopenharmony_ci resize1[1][4][5] = 2.0; 93617a3babSopenharmony_ci resize1.length(); // ERROR 94617a3babSopenharmony_ci float resize1[3][5][7]; 95617a3babSopenharmony_ci resize1.length(); // 3 in AST 96617a3babSopenharmony_ci resize1[1].length(); // 5 in AST 97617a3babSopenharmony_ci resize1[1][1].length(); // 7 in AST 98617a3babSopenharmony_ci resize1[1][1][1].length(); // ERROR 99617a3babSopenharmony_ci 100617a3babSopenharmony_ci float resize2[][5][7]; 101617a3babSopenharmony_ci float resize2[3][4][7]; // ERROR, inner dim change 102617a3babSopenharmony_ci 103617a3babSopenharmony_ci float resize3[][5][7]; 104617a3babSopenharmony_ci float resize3[3][5][9]; // ERROR, inner dim changed 105617a3babSopenharmony_ci 106617a3babSopenharmony_ci float resize4[][5][7]; 107617a3babSopenharmony_ci int resize4[3][5][7]; // ERROR, element type 108617a3babSopenharmony_ci} 109