yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
65c78a0b
main
1#version 430 2 3float [ 4 ][ 5 ][ 6 ] many[ 1 ][ 2 ][ 3 ]; 4 5float gu[][ 7 ]; 6float gimp[][]; // ERROR, implicit inner 7float g4[ 4 ][ 7 ]; 8float g5[ 5 ][ 7 ]; 9 10float [ 4 ][ 7 ] foo( float a[ 5 ][ 7 ]) 11{ 12float r[ 7 ]; 13r = a[ 2 ]; 14float []( a [ 0 ], a [ 1 ], r , a [ 3 ]); // ERROR, too few dims 15float [ 4 ][ 7 ][ 4 ]( a [ 0 ], a [ 1 ], r , a [ 3 ]); // ERROR, too many dims 16return float[ 4 ][ 7 ](a[ 0 ], a[ 1 ], r, a[ 3 ]); 17return float[][](a[ 0 ], a[ 1 ], r, a[ 3 ]); 18return float[][ 7 ](a[ 0 ], a[ 1 ], a[ 2 ], a[ 3 ]); 19} 20 21void bar( float [ 5 ][ 7 ]) {} 22 23void main() 24{ 25{ 26float gu[ 3 ][ 4 ][ 2 ]; 27 28gu[ 2 ][ 4 ][ 1 ] = 4.0 ; // ERROR, overflow 29} 30vec4 ca4[ 3 ][ 2 ] = vec4[][](vec4[ 2 ](vec4( 0.0 ), vec4( 1.0 )), 31vec4[ 2 ](vec4( 0.0 ), vec4( 1.0 )), 32vec4[ 2 ](vec4( 0.0 ), vec4( 1.0 ))); 33vec4 caim[][ 2 ] = vec4[][](vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 34vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 35vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 ))); 36vec4 caim2[][] = vec4[][](vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 37vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 38vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 ))); 39vec4 caim3[ 3 ][] = vec4[][](vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 40vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 41vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 ))); 42 43vec4 a4[ 3 ][ 2 ] = {vec4[](vec4( 0.0 ), vec4( 1.0 )), 44vec4[ 2 ](vec4( 0.0 ), vec4( 1.0 )), 45vec4[ 2 ](vec4( 0.0 ), vec4( 1.0 )) }; 46vec4 aim[][ 2 ] = {vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 47vec4[](vec4( 4.0 ), vec4( 2.0 )), 48vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )) }; 49vec4 aim2[][] = {vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 50vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 51vec4[](vec4( 4.0 ), vec4( 2.0 )) }; 52vec4 aim3[ 3 ][] = {vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 53vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 54vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )) }; 55 56vec4 bad2[ 3 ][] = {vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), // ERROR 57vec4[ 3 ](vec4( 4.0 ), vec4( 2.0 ), vec4( 5.0 )), 58vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )) }; 59 60vec4 bad3[ 3 ][] = {vec4[ 3 ](vec4( 4.0 ), vec4( 2.0 ), vec4( 5.0 )), // ERROR 61vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 62vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )) }; 63 64vec4 bad4[ 4 ][] = {vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), // ERROR 65vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )), 66vec4[ 2 ](vec4( 4.0 ), vec4( 2.0 )) }; 67 68 69g4 = foo(g5); 70g5 = g4; // ERROR, wrong types 71gu = g4; // ERROR, not yet sized 72 73foo(gu); // ERROR, not yet sized 74bar(g5); 75 76if (foo(g5) == g4) 77; 78if (foo(g5) == g5) // ERROR, different types 79; 80 81float u[][ 7 ]; 82u[ 2 ][ 2 ] = 3.0 ; 83float u[ 5 ][ 7 ]; 84u[ 5 ][ 2 ] = 5.0 ; // ERROR 85foo(u); 86} 87 88void foo3() 89{ 90float resize1[][ 5 ][ 7 ]; 91resize1. length (); // ERROR 92resize1[ 1 ][ 4 ][ 5 ] = 2.0 ; 93resize1. length (); // ERROR 94float resize1[ 3 ][ 5 ][ 7 ]; 95resize1. length (); // 3 in AST 96resize1[ 1 ]. length (); // 5 in AST 97resize1[ 1 ][ 1 ]. length (); // 7 in AST 98resize1[ 1 ][ 1 ][ 1 ]. length (); // ERROR 99 100float resize2[][ 5 ][ 7 ]; 101float resize2[ 3 ][ 4 ][ 7 ]; // ERROR, inner dim change 102 103float resize3[][ 5 ][ 7 ]; 104float resize3[ 3 ][ 5 ][ 9 ]; // ERROR, inner dim changed 105 106float resize4[][ 5 ][ 7 ]; 107int resize4[ 3 ][ 5 ][ 7 ]; // ERROR, element type 108}