Merge pull request #2891 from dneto0/hlsl-namespace
[platform/upstream/glslang.git] / Test / array.frag
1 #version 130
2
3 float gu[];
4 float g4[4];
5 float g5[5];
6
7 uniform int a;
8
9 float[4] foo(float a[5])
10 {
11     return float[](a[0], a[1], a[2], a[3]);
12 }
13
14 void bar(float[5]) {}
15
16 void main()
17 {
18     {
19         float gu[2];  // okay, new scope
20
21         gu[2] = 4.0;  // ERROR, overflow
22     }
23
24     gu[2] = 4.0; // okay
25
26     gu[3] = 3.0;
27     gu[a] = 5.0; // ERROR
28
29     g4 = foo(g5);
30     g5 = g4;  // ERROR
31     gu = g4;  // ERROR
32
33     foo(gu);  // ERROR
34     bar(g5);
35
36     if (float[4](1.0, 2.0, 3.0, 4.0) == g4)
37         gu[0] = 2.0;
38
39     float u[];
40     u[2] = 3.0; // okay
41     float u[5];
42     u[5] = 5.0; // ERROR
43     foo(u);     // okay
44
45     gl_FragData[1000] = vec4(1.0); // ERROR
46     gl_FragData[-1] = vec4(1.0);   // ERROR
47     gl_FragData[3] = vec4(1.0);
48
49     const int ca[] = int[](3, 2);
50     int sum = ca[0];
51     sum += ca[1];
52     sum += ca[2];  // ERROR
53
54     const int ca3[3] = int[](3, 2);  // ERROR
55     int ica[] = int[](3, 2);
56     int ica3[3] = int[](3, 2);       // ERROR
57     ica[3.1] = 3;                    // ERROR
58     ica[u[1]] = 4;                   // ERROR
59 }
60
61 int[] foo213234();        // ERROR
62 int foo234234(float[]);   // ERROR
63 int foo234235(vec2[] v);  // ERROR
64
65 vec3 guns[];
66 float f = guns[7];
67
68 void foo()
69 {
70     int uns[];
71     uns[3] = 40;
72     uns[1] = 30;
73     guns[2] = vec3(2.4);
74
75     float unsf[];
76     bar(unsf);          // ERROR
77 }
78
79 float[] foo2()          // ERROR
80 {
81     float f[];
82     return f;
83     float g[9];
84     return g;           // ERROR
85 }
86
87 float gUnusedUnsized[];
88
89 void foo3()
90 {
91     float resize1[];
92     resize1[2] = 4.0;
93     resize1.length();  // ERROR
94     float resize1[3];
95     resize1.length();
96
97     float resize2[];
98     resize2[5] = 4.0;
99     float resize2[5];  // should be ERROR, but is not
100     resize2.length();
101     resize2[5] = 4.0;  // ERROR
102 }
103
104 int[] i = int[]();    // ERROR, need constructor arguments
105 float emptyA[];
106 float b = vec4(emptyA);    // ERROR, array can't be a constructor argument
107 uniform sampler2D s2d[];
108
109 void foo4()
110 {
111     s2d[a];                         // ERROR, can't variably index unsized array
112     float local[] = gUnusedUnsized; // ERROR, can initialize with runtime-sized array
113 }