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