xref: /aosp_15_r20/external/deqp/data/gles3/shaders/scoping.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Workergroup valid "Valid scoping and name redeclaration cases"
2*35238bceSAndroid Build Coastguard Worker
3*35238bceSAndroid Build Coastguard Worker    case local_variable_hides_global_variable
4*35238bceSAndroid Build Coastguard Worker        version 300 es
5*35238bceSAndroid Build Coastguard Worker        values
6*35238bceSAndroid Build Coastguard Worker        {
7*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
8*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
9*35238bceSAndroid Build Coastguard Worker        }
10*35238bceSAndroid Build Coastguard Worker
11*35238bceSAndroid Build Coastguard Worker        both ""
12*35238bceSAndroid Build Coastguard Worker            #version 300 es
13*35238bceSAndroid Build Coastguard Worker            precision mediump float;
14*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
15*35238bceSAndroid Build Coastguard Worker
16*35238bceSAndroid Build Coastguard Worker            int a = -1;
17*35238bceSAndroid Build Coastguard Worker
18*35238bceSAndroid Build Coastguard Worker            void main()
19*35238bceSAndroid Build Coastguard Worker            {
20*35238bceSAndroid Build Coastguard Worker                ${SETUP}
21*35238bceSAndroid Build Coastguard Worker                int a = in0;
22*35238bceSAndroid Build Coastguard Worker
23*35238bceSAndroid Build Coastguard Worker                out0 = a;
24*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
25*35238bceSAndroid Build Coastguard Worker            }
26*35238bceSAndroid Build Coastguard Worker        ""
27*35238bceSAndroid Build Coastguard Worker    end
28*35238bceSAndroid Build Coastguard Worker
29*35238bceSAndroid Build Coastguard Worker    case block_variable_hides_local_variable
30*35238bceSAndroid Build Coastguard Worker        version 300 es
31*35238bceSAndroid Build Coastguard Worker        values
32*35238bceSAndroid Build Coastguard Worker        {
33*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
34*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
35*35238bceSAndroid Build Coastguard Worker        }
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard Worker        both ""
38*35238bceSAndroid Build Coastguard Worker            #version 300 es
39*35238bceSAndroid Build Coastguard Worker            precision mediump float;
40*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
41*35238bceSAndroid Build Coastguard Worker            void main()
42*35238bceSAndroid Build Coastguard Worker            {
43*35238bceSAndroid Build Coastguard Worker                ${SETUP}
44*35238bceSAndroid Build Coastguard Worker                int a = in0;
45*35238bceSAndroid Build Coastguard Worker                {
46*35238bceSAndroid Build Coastguard Worker                    int a = -1;
47*35238bceSAndroid Build Coastguard Worker                }
48*35238bceSAndroid Build Coastguard Worker                out0 = a;
49*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
50*35238bceSAndroid Build Coastguard Worker            }
51*35238bceSAndroid Build Coastguard Worker        ""
52*35238bceSAndroid Build Coastguard Worker    end
53*35238bceSAndroid Build Coastguard Worker
54*35238bceSAndroid Build Coastguard Worker    case block_variable_hides_global_variable
55*35238bceSAndroid Build Coastguard Worker        version 300 es
56*35238bceSAndroid Build Coastguard Worker        values
57*35238bceSAndroid Build Coastguard Worker        {
58*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
59*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
60*35238bceSAndroid Build Coastguard Worker        }
61*35238bceSAndroid Build Coastguard Worker
62*35238bceSAndroid Build Coastguard Worker        both ""
63*35238bceSAndroid Build Coastguard Worker            #version 300 es
64*35238bceSAndroid Build Coastguard Worker            precision mediump float;
65*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
66*35238bceSAndroid Build Coastguard Worker
67*35238bceSAndroid Build Coastguard Worker            int a = -1;
68*35238bceSAndroid Build Coastguard Worker
69*35238bceSAndroid Build Coastguard Worker            void main()
70*35238bceSAndroid Build Coastguard Worker            {
71*35238bceSAndroid Build Coastguard Worker                ${SETUP}
72*35238bceSAndroid Build Coastguard Worker                {
73*35238bceSAndroid Build Coastguard Worker                    int a = in0;
74*35238bceSAndroid Build Coastguard Worker
75*35238bceSAndroid Build Coastguard Worker                    out0 = a;
76*35238bceSAndroid Build Coastguard Worker                }
77*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
78*35238bceSAndroid Build Coastguard Worker            }
79*35238bceSAndroid Build Coastguard Worker        ""
80*35238bceSAndroid Build Coastguard Worker    end
81*35238bceSAndroid Build Coastguard Worker
82*35238bceSAndroid Build Coastguard Worker    case for_init_statement_variable_hides_local_variable
83*35238bceSAndroid Build Coastguard Worker        version 300 es
84*35238bceSAndroid Build Coastguard Worker        values
85*35238bceSAndroid Build Coastguard Worker        {
86*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
87*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
88*35238bceSAndroid Build Coastguard Worker        }
89*35238bceSAndroid Build Coastguard Worker
90*35238bceSAndroid Build Coastguard Worker        both ""
91*35238bceSAndroid Build Coastguard Worker            #version 300 es
92*35238bceSAndroid Build Coastguard Worker            precision mediump float;
93*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
94*35238bceSAndroid Build Coastguard Worker            void main()
95*35238bceSAndroid Build Coastguard Worker            {
96*35238bceSAndroid Build Coastguard Worker                ${SETUP}
97*35238bceSAndroid Build Coastguard Worker                int a = in0;
98*35238bceSAndroid Build Coastguard Worker                for (int a = 0; a < 10; a++)
99*35238bceSAndroid Build Coastguard Worker                {
100*35238bceSAndroid Build Coastguard Worker                }
101*35238bceSAndroid Build Coastguard Worker                out0 = a;
102*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
103*35238bceSAndroid Build Coastguard Worker            }
104*35238bceSAndroid Build Coastguard Worker        ""
105*35238bceSAndroid Build Coastguard Worker    end
106*35238bceSAndroid Build Coastguard Worker
107*35238bceSAndroid Build Coastguard Worker    case while_condition_variable_hides_local_variable
108*35238bceSAndroid Build Coastguard Worker        version 300 es
109*35238bceSAndroid Build Coastguard Worker        values
110*35238bceSAndroid Build Coastguard Worker        {
111*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
112*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
113*35238bceSAndroid Build Coastguard Worker        }
114*35238bceSAndroid Build Coastguard Worker
115*35238bceSAndroid Build Coastguard Worker        both ""
116*35238bceSAndroid Build Coastguard Worker            #version 300 es
117*35238bceSAndroid Build Coastguard Worker            precision mediump float;
118*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
119*35238bceSAndroid Build Coastguard Worker            void main()
120*35238bceSAndroid Build Coastguard Worker            {
121*35238bceSAndroid Build Coastguard Worker                ${SETUP}
122*35238bceSAndroid Build Coastguard Worker                int a = in0;
123*35238bceSAndroid Build Coastguard Worker                int i = 0;
124*35238bceSAndroid Build Coastguard Worker                while (bool a = (i < 1))
125*35238bceSAndroid Build Coastguard Worker                {
126*35238bceSAndroid Build Coastguard Worker                    i++;
127*35238bceSAndroid Build Coastguard Worker                }
128*35238bceSAndroid Build Coastguard Worker                out0 = a;
129*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
130*35238bceSAndroid Build Coastguard Worker            }
131*35238bceSAndroid Build Coastguard Worker        ""
132*35238bceSAndroid Build Coastguard Worker    end
133*35238bceSAndroid Build Coastguard Worker
134*35238bceSAndroid Build Coastguard Worker    case for_init_statement_variable_hides_global_variable
135*35238bceSAndroid Build Coastguard Worker        version 300 es
136*35238bceSAndroid Build Coastguard Worker        values
137*35238bceSAndroid Build Coastguard Worker        {
138*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
139*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
140*35238bceSAndroid Build Coastguard Worker        }
141*35238bceSAndroid Build Coastguard Worker
142*35238bceSAndroid Build Coastguard Worker        both ""
143*35238bceSAndroid Build Coastguard Worker            #version 300 es
144*35238bceSAndroid Build Coastguard Worker            precision mediump float;
145*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
146*35238bceSAndroid Build Coastguard Worker
147*35238bceSAndroid Build Coastguard Worker            int a = 5;
148*35238bceSAndroid Build Coastguard Worker
149*35238bceSAndroid Build Coastguard Worker            void main()
150*35238bceSAndroid Build Coastguard Worker            {
151*35238bceSAndroid Build Coastguard Worker                ${SETUP}
152*35238bceSAndroid Build Coastguard Worker                for (int a = 0; a < 10; a++)
153*35238bceSAndroid Build Coastguard Worker                {
154*35238bceSAndroid Build Coastguard Worker                }
155*35238bceSAndroid Build Coastguard Worker                out0 = in0 + a - 5;
156*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
157*35238bceSAndroid Build Coastguard Worker            }
158*35238bceSAndroid Build Coastguard Worker        ""
159*35238bceSAndroid Build Coastguard Worker    end
160*35238bceSAndroid Build Coastguard Worker
161*35238bceSAndroid Build Coastguard Worker    case while_condition_variable_hides_global_variable
162*35238bceSAndroid Build Coastguard Worker        version 300 es
163*35238bceSAndroid Build Coastguard Worker        values
164*35238bceSAndroid Build Coastguard Worker        {
165*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
166*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
167*35238bceSAndroid Build Coastguard Worker        }
168*35238bceSAndroid Build Coastguard Worker
169*35238bceSAndroid Build Coastguard Worker        both ""
170*35238bceSAndroid Build Coastguard Worker            #version 300 es
171*35238bceSAndroid Build Coastguard Worker            precision mediump float;
172*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
173*35238bceSAndroid Build Coastguard Worker
174*35238bceSAndroid Build Coastguard Worker            int a = 5;
175*35238bceSAndroid Build Coastguard Worker
176*35238bceSAndroid Build Coastguard Worker            void main()
177*35238bceSAndroid Build Coastguard Worker            {
178*35238bceSAndroid Build Coastguard Worker                ${SETUP}
179*35238bceSAndroid Build Coastguard Worker                int i = 0;
180*35238bceSAndroid Build Coastguard Worker                while (bool a = (i < 1))
181*35238bceSAndroid Build Coastguard Worker                {
182*35238bceSAndroid Build Coastguard Worker                    i++;
183*35238bceSAndroid Build Coastguard Worker                }
184*35238bceSAndroid Build Coastguard Worker                out0 = in0 + a - 5;
185*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
186*35238bceSAndroid Build Coastguard Worker            }
187*35238bceSAndroid Build Coastguard Worker        ""
188*35238bceSAndroid Build Coastguard Worker    end
189*35238bceSAndroid Build Coastguard Worker
190*35238bceSAndroid Build Coastguard Worker    case variable_in_if_hides_global_variable
191*35238bceSAndroid Build Coastguard Worker        version 300 es
192*35238bceSAndroid Build Coastguard Worker        values
193*35238bceSAndroid Build Coastguard Worker        {
194*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
195*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
196*35238bceSAndroid Build Coastguard Worker        }
197*35238bceSAndroid Build Coastguard Worker
198*35238bceSAndroid Build Coastguard Worker        both ""
199*35238bceSAndroid Build Coastguard Worker            #version 300 es
200*35238bceSAndroid Build Coastguard Worker            precision mediump float;
201*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
202*35238bceSAndroid Build Coastguard Worker
203*35238bceSAndroid Build Coastguard Worker            int a = 1;
204*35238bceSAndroid Build Coastguard Worker
205*35238bceSAndroid Build Coastguard Worker            void main()
206*35238bceSAndroid Build Coastguard Worker            {
207*35238bceSAndroid Build Coastguard Worker                ${SETUP}
208*35238bceSAndroid Build Coastguard Worker                if (true)
209*35238bceSAndroid Build Coastguard Worker                    int a = 42;
210*35238bceSAndroid Build Coastguard Worker                out0 = a*in0;
211*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
212*35238bceSAndroid Build Coastguard Worker            }
213*35238bceSAndroid Build Coastguard Worker        ""
214*35238bceSAndroid Build Coastguard Worker    end
215*35238bceSAndroid Build Coastguard Worker
216*35238bceSAndroid Build Coastguard Worker    case variable_from_outer_scope_visible_in_initializer
217*35238bceSAndroid Build Coastguard Worker        version 300 es
218*35238bceSAndroid Build Coastguard Worker        values
219*35238bceSAndroid Build Coastguard Worker        {
220*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
221*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
222*35238bceSAndroid Build Coastguard Worker        }
223*35238bceSAndroid Build Coastguard Worker
224*35238bceSAndroid Build Coastguard Worker        both ""
225*35238bceSAndroid Build Coastguard Worker            #version 300 es
226*35238bceSAndroid Build Coastguard Worker            precision mediump float;
227*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
228*35238bceSAndroid Build Coastguard Worker            void main()
229*35238bceSAndroid Build Coastguard Worker            {
230*35238bceSAndroid Build Coastguard Worker                ${SETUP}
231*35238bceSAndroid Build Coastguard Worker                int a = in0;
232*35238bceSAndroid Build Coastguard Worker                {
233*35238bceSAndroid Build Coastguard Worker                    int a = a+5, b = a-5;
234*35238bceSAndroid Build Coastguard Worker                    out0 = b;
235*35238bceSAndroid Build Coastguard Worker                    a = 42;
236*35238bceSAndroid Build Coastguard Worker                }
237*35238bceSAndroid Build Coastguard Worker                out0 = out0 + a - in0;
238*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
239*35238bceSAndroid Build Coastguard Worker            }
240*35238bceSAndroid Build Coastguard Worker        ""
241*35238bceSAndroid Build Coastguard Worker    end
242*35238bceSAndroid Build Coastguard Worker
243*35238bceSAndroid Build Coastguard Worker    case local_int_variable_hides_struct_type
244*35238bceSAndroid Build Coastguard Worker        version 300 es
245*35238bceSAndroid Build Coastguard Worker        values
246*35238bceSAndroid Build Coastguard Worker        {
247*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
248*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
249*35238bceSAndroid Build Coastguard Worker        }
250*35238bceSAndroid Build Coastguard Worker
251*35238bceSAndroid Build Coastguard Worker        both ""
252*35238bceSAndroid Build Coastguard Worker            #version 300 es
253*35238bceSAndroid Build Coastguard Worker            precision mediump float;
254*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
255*35238bceSAndroid Build Coastguard Worker
256*35238bceSAndroid Build Coastguard Worker            struct S { int val; };
257*35238bceSAndroid Build Coastguard Worker
258*35238bceSAndroid Build Coastguard Worker            void main()
259*35238bceSAndroid Build Coastguard Worker            {
260*35238bceSAndroid Build Coastguard Worker                ${SETUP}
261*35238bceSAndroid Build Coastguard Worker                int S = S(in0).val;
262*35238bceSAndroid Build Coastguard Worker                out0 = S;
263*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
264*35238bceSAndroid Build Coastguard Worker            }
265*35238bceSAndroid Build Coastguard Worker        ""
266*35238bceSAndroid Build Coastguard Worker    end
267*35238bceSAndroid Build Coastguard Worker
268*35238bceSAndroid Build Coastguard Worker    case local_struct_variable_hides_struct_type
269*35238bceSAndroid Build Coastguard Worker        version 300 es
270*35238bceSAndroid Build Coastguard Worker        values
271*35238bceSAndroid Build Coastguard Worker        {
272*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
273*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
274*35238bceSAndroid Build Coastguard Worker        }
275*35238bceSAndroid Build Coastguard Worker
276*35238bceSAndroid Build Coastguard Worker        both ""
277*35238bceSAndroid Build Coastguard Worker            #version 300 es
278*35238bceSAndroid Build Coastguard Worker            precision mediump float;
279*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
280*35238bceSAndroid Build Coastguard Worker
281*35238bceSAndroid Build Coastguard Worker            struct S { int val; };
282*35238bceSAndroid Build Coastguard Worker
283*35238bceSAndroid Build Coastguard Worker            void main()
284*35238bceSAndroid Build Coastguard Worker            {
285*35238bceSAndroid Build Coastguard Worker                ${SETUP}
286*35238bceSAndroid Build Coastguard Worker                S S = S(in0);
287*35238bceSAndroid Build Coastguard Worker                out0 = S.val;
288*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
289*35238bceSAndroid Build Coastguard Worker            }
290*35238bceSAndroid Build Coastguard Worker        ""
291*35238bceSAndroid Build Coastguard Worker    end
292*35238bceSAndroid Build Coastguard Worker
293*35238bceSAndroid Build Coastguard Worker    case local_variable_hides_function
294*35238bceSAndroid Build Coastguard Worker        version 300 es
295*35238bceSAndroid Build Coastguard Worker        values
296*35238bceSAndroid Build Coastguard Worker        {
297*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
298*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
299*35238bceSAndroid Build Coastguard Worker        }
300*35238bceSAndroid Build Coastguard Worker
301*35238bceSAndroid Build Coastguard Worker        both ""
302*35238bceSAndroid Build Coastguard Worker            #version 300 es
303*35238bceSAndroid Build Coastguard Worker            precision mediump float;
304*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
305*35238bceSAndroid Build Coastguard Worker
306*35238bceSAndroid Build Coastguard Worker            int foo (int x) { return x; }
307*35238bceSAndroid Build Coastguard Worker
308*35238bceSAndroid Build Coastguard Worker            void main()
309*35238bceSAndroid Build Coastguard Worker            {
310*35238bceSAndroid Build Coastguard Worker                ${SETUP}
311*35238bceSAndroid Build Coastguard Worker                int foo = in0;
312*35238bceSAndroid Build Coastguard Worker                out0 = foo;
313*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
314*35238bceSAndroid Build Coastguard Worker            }
315*35238bceSAndroid Build Coastguard Worker        ""
316*35238bceSAndroid Build Coastguard Worker    end
317*35238bceSAndroid Build Coastguard Worker
318*35238bceSAndroid Build Coastguard Worker    case function_parameter_hides_global_variable
319*35238bceSAndroid Build Coastguard Worker        version 300 es
320*35238bceSAndroid Build Coastguard Worker        values
321*35238bceSAndroid Build Coastguard Worker        {
322*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
323*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
324*35238bceSAndroid Build Coastguard Worker        }
325*35238bceSAndroid Build Coastguard Worker
326*35238bceSAndroid Build Coastguard Worker        both ""
327*35238bceSAndroid Build Coastguard Worker            #version 300 es
328*35238bceSAndroid Build Coastguard Worker            precision mediump float;
329*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
330*35238bceSAndroid Build Coastguard Worker
331*35238bceSAndroid Build Coastguard Worker            int a = -1;
332*35238bceSAndroid Build Coastguard Worker
333*35238bceSAndroid Build Coastguard Worker            int func (int a) { return a; }
334*35238bceSAndroid Build Coastguard Worker
335*35238bceSAndroid Build Coastguard Worker            void main()
336*35238bceSAndroid Build Coastguard Worker            {
337*35238bceSAndroid Build Coastguard Worker                ${SETUP}
338*35238bceSAndroid Build Coastguard Worker                out0 = func(in0);
339*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
340*35238bceSAndroid Build Coastguard Worker            }
341*35238bceSAndroid Build Coastguard Worker        ""
342*35238bceSAndroid Build Coastguard Worker    end
343*35238bceSAndroid Build Coastguard Worker
344*35238bceSAndroid Build Coastguard Worker    case function_parameter_hides_struct_type
345*35238bceSAndroid Build Coastguard Worker        version 300 es
346*35238bceSAndroid Build Coastguard Worker        values
347*35238bceSAndroid Build Coastguard Worker        {
348*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
349*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
350*35238bceSAndroid Build Coastguard Worker        }
351*35238bceSAndroid Build Coastguard Worker
352*35238bceSAndroid Build Coastguard Worker        both ""
353*35238bceSAndroid Build Coastguard Worker            #version 300 es
354*35238bceSAndroid Build Coastguard Worker            precision mediump float;
355*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
356*35238bceSAndroid Build Coastguard Worker
357*35238bceSAndroid Build Coastguard Worker            struct S { int x; };
358*35238bceSAndroid Build Coastguard Worker
359*35238bceSAndroid Build Coastguard Worker            int func (int S) { return S; }
360*35238bceSAndroid Build Coastguard Worker
361*35238bceSAndroid Build Coastguard Worker            void main()
362*35238bceSAndroid Build Coastguard Worker            {
363*35238bceSAndroid Build Coastguard Worker                ${SETUP}
364*35238bceSAndroid Build Coastguard Worker                out0 = func(in0);
365*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
366*35238bceSAndroid Build Coastguard Worker            }
367*35238bceSAndroid Build Coastguard Worker        ""
368*35238bceSAndroid Build Coastguard Worker    end
369*35238bceSAndroid Build Coastguard Worker
370*35238bceSAndroid Build Coastguard Worker    case function_parameter_hides_function
371*35238bceSAndroid Build Coastguard Worker        version 300 es
372*35238bceSAndroid Build Coastguard Worker        values
373*35238bceSAndroid Build Coastguard Worker        {
374*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
375*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
376*35238bceSAndroid Build Coastguard Worker        }
377*35238bceSAndroid Build Coastguard Worker
378*35238bceSAndroid Build Coastguard Worker        both ""
379*35238bceSAndroid Build Coastguard Worker            #version 300 es
380*35238bceSAndroid Build Coastguard Worker            precision mediump float;
381*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
382*35238bceSAndroid Build Coastguard Worker
383*35238bceSAndroid Build Coastguard Worker            int func (int func) { return func; }
384*35238bceSAndroid Build Coastguard Worker
385*35238bceSAndroid Build Coastguard Worker            void main()
386*35238bceSAndroid Build Coastguard Worker            {
387*35238bceSAndroid Build Coastguard Worker                ${SETUP}
388*35238bceSAndroid Build Coastguard Worker                out0 = func(in0);
389*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
390*35238bceSAndroid Build Coastguard Worker            }
391*35238bceSAndroid Build Coastguard Worker        ""
392*35238bceSAndroid Build Coastguard Worker    end
393*35238bceSAndroid Build Coastguard Worker
394*35238bceSAndroid Build Coastguard Worker    case local_variable_in_inner_scope_hides_function_parameter
395*35238bceSAndroid Build Coastguard Worker        version 300 es
396*35238bceSAndroid Build Coastguard Worker        values
397*35238bceSAndroid Build Coastguard Worker        {
398*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
399*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
400*35238bceSAndroid Build Coastguard Worker        }
401*35238bceSAndroid Build Coastguard Worker
402*35238bceSAndroid Build Coastguard Worker        both ""
403*35238bceSAndroid Build Coastguard Worker            #version 300 es
404*35238bceSAndroid Build Coastguard Worker            precision mediump float;
405*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
406*35238bceSAndroid Build Coastguard Worker            int func (int inp, int x) { { int x = 5; return inp + x - 5; } }
407*35238bceSAndroid Build Coastguard Worker
408*35238bceSAndroid Build Coastguard Worker            void main()
409*35238bceSAndroid Build Coastguard Worker            {
410*35238bceSAndroid Build Coastguard Worker                ${SETUP}
411*35238bceSAndroid Build Coastguard Worker                out0 = func(in0, 42);
412*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
413*35238bceSAndroid Build Coastguard Worker            }
414*35238bceSAndroid Build Coastguard Worker        ""
415*35238bceSAndroid Build Coastguard Worker    end
416*35238bceSAndroid Build Coastguard Worker
417*35238bceSAndroid Build Coastguard Worker    case redeclare_function
418*35238bceSAndroid Build Coastguard Worker        version 300 es
419*35238bceSAndroid Build Coastguard Worker        values
420*35238bceSAndroid Build Coastguard Worker        {
421*35238bceSAndroid Build Coastguard Worker            input int in0 = [ 1 | 2 | 3 ];
422*35238bceSAndroid Build Coastguard Worker            output int out0 = [ 1 | 2 | 3 ];
423*35238bceSAndroid Build Coastguard Worker        }
424*35238bceSAndroid Build Coastguard Worker
425*35238bceSAndroid Build Coastguard Worker        both ""
426*35238bceSAndroid Build Coastguard Worker            #version 300 es
427*35238bceSAndroid Build Coastguard Worker            precision mediump float;
428*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
429*35238bceSAndroid Build Coastguard Worker
430*35238bceSAndroid Build Coastguard Worker            int func (int x);
431*35238bceSAndroid Build Coastguard Worker            int func (int);
432*35238bceSAndroid Build Coastguard Worker            int func (int inp) { return inp; }
433*35238bceSAndroid Build Coastguard Worker
434*35238bceSAndroid Build Coastguard Worker            void main()
435*35238bceSAndroid Build Coastguard Worker            {
436*35238bceSAndroid Build Coastguard Worker                ${SETUP}
437*35238bceSAndroid Build Coastguard Worker                out0 = func(in0);
438*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
439*35238bceSAndroid Build Coastguard Worker            }
440*35238bceSAndroid Build Coastguard Worker        ""
441*35238bceSAndroid Build Coastguard Worker    end
442*35238bceSAndroid Build Coastguard Worker
443*35238bceSAndroid Build Coastguard Workerend
444*35238bceSAndroid Build Coastguard Worker
445*35238bceSAndroid Build Coastguard Workergroup invalid "Invalid scoping behavior"
446*35238bceSAndroid Build Coastguard Worker
447*35238bceSAndroid Build Coastguard Worker    case redeclare_global_variable
448*35238bceSAndroid Build Coastguard Worker        version 300 es
449*35238bceSAndroid Build Coastguard Worker        expect compile_fail
450*35238bceSAndroid Build Coastguard Worker        both ""
451*35238bceSAndroid Build Coastguard Worker            #version 300 es
452*35238bceSAndroid Build Coastguard Worker            precision mediump float;
453*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
454*35238bceSAndroid Build Coastguard Worker
455*35238bceSAndroid Build Coastguard Worker            int a;
456*35238bceSAndroid Build Coastguard Worker            float a;
457*35238bceSAndroid Build Coastguard Worker
458*35238bceSAndroid Build Coastguard Worker            void main()
459*35238bceSAndroid Build Coastguard Worker            {
460*35238bceSAndroid Build Coastguard Worker                a = 1.0;
461*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
462*35238bceSAndroid Build Coastguard Worker            }
463*35238bceSAndroid Build Coastguard Worker        ""
464*35238bceSAndroid Build Coastguard Worker    end
465*35238bceSAndroid Build Coastguard Worker
466*35238bceSAndroid Build Coastguard Worker    case redeclare_local_variable
467*35238bceSAndroid Build Coastguard Worker        version 300 es
468*35238bceSAndroid Build Coastguard Worker        expect compile_fail
469*35238bceSAndroid Build Coastguard Worker        both ""
470*35238bceSAndroid Build Coastguard Worker            #version 300 es
471*35238bceSAndroid Build Coastguard Worker            precision mediump float;
472*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
473*35238bceSAndroid Build Coastguard Worker
474*35238bceSAndroid Build Coastguard Worker            void main()
475*35238bceSAndroid Build Coastguard Worker            {
476*35238bceSAndroid Build Coastguard Worker                int a;
477*35238bceSAndroid Build Coastguard Worker                float a;
478*35238bceSAndroid Build Coastguard Worker                a = 1.0;
479*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
480*35238bceSAndroid Build Coastguard Worker            }
481*35238bceSAndroid Build Coastguard Worker        ""
482*35238bceSAndroid Build Coastguard Worker    end
483*35238bceSAndroid Build Coastguard Worker
484*35238bceSAndroid Build Coastguard Worker    case redeclare_for_init_statement_variable
485*35238bceSAndroid Build Coastguard Worker        version 300 es
486*35238bceSAndroid Build Coastguard Worker        expect compile_fail
487*35238bceSAndroid Build Coastguard Worker        both ""
488*35238bceSAndroid Build Coastguard Worker            #version 300 es
489*35238bceSAndroid Build Coastguard Worker            precision mediump float;
490*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
491*35238bceSAndroid Build Coastguard Worker
492*35238bceSAndroid Build Coastguard Worker            void main()
493*35238bceSAndroid Build Coastguard Worker            {
494*35238bceSAndroid Build Coastguard Worker                for (int i = 0; i < 10; i++)
495*35238bceSAndroid Build Coastguard Worker                {
496*35238bceSAndroid Build Coastguard Worker                    int i = 11;
497*35238bceSAndroid Build Coastguard Worker                }
498*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(0.0);
499*35238bceSAndroid Build Coastguard Worker            }
500*35238bceSAndroid Build Coastguard Worker        ""
501*35238bceSAndroid Build Coastguard Worker    end
502*35238bceSAndroid Build Coastguard Worker
503*35238bceSAndroid Build Coastguard Worker    case redeclare_for_condition_variable
504*35238bceSAndroid Build Coastguard Worker        version 300 es
505*35238bceSAndroid Build Coastguard Worker        expect compile_fail
506*35238bceSAndroid Build Coastguard Worker        both ""
507*35238bceSAndroid Build Coastguard Worker            #version 300 es
508*35238bceSAndroid Build Coastguard Worker            precision mediump float;
509*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
510*35238bceSAndroid Build Coastguard Worker
511*35238bceSAndroid Build Coastguard Worker            void main()
512*35238bceSAndroid Build Coastguard Worker            {
513*35238bceSAndroid Build Coastguard Worker                for (int i = 0; int a = (i < 10); i++)
514*35238bceSAndroid Build Coastguard Worker                {
515*35238bceSAndroid Build Coastguard Worker                    int a = 0;
516*35238bceSAndroid Build Coastguard Worker                }
517*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(0.0);
518*35238bceSAndroid Build Coastguard Worker            }
519*35238bceSAndroid Build Coastguard Worker        ""
520*35238bceSAndroid Build Coastguard Worker    end
521*35238bceSAndroid Build Coastguard Worker
522*35238bceSAndroid Build Coastguard Worker    case redeclare_for_init_statement_variable_in_for_condition
523*35238bceSAndroid Build Coastguard Worker        version 300 es
524*35238bceSAndroid Build Coastguard Worker        expect compile_fail
525*35238bceSAndroid Build Coastguard Worker        both ""
526*35238bceSAndroid Build Coastguard Worker            #version 300 es
527*35238bceSAndroid Build Coastguard Worker            precision mediump float;
528*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
529*35238bceSAndroid Build Coastguard Worker
530*35238bceSAndroid Build Coastguard Worker            void main()
531*35238bceSAndroid Build Coastguard Worker            {
532*35238bceSAndroid Build Coastguard Worker                float a;
533*35238bceSAndroid Build Coastguard Worker                for (int i = 0; int i = (i < 10); i++)
534*35238bceSAndroid Build Coastguard Worker                {
535*35238bceSAndroid Build Coastguard Worker                    a = sin(i);
536*35238bceSAndroid Build Coastguard Worker                }
537*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
538*35238bceSAndroid Build Coastguard Worker            }
539*35238bceSAndroid Build Coastguard Worker        ""
540*35238bceSAndroid Build Coastguard Worker    end
541*35238bceSAndroid Build Coastguard Worker
542*35238bceSAndroid Build Coastguard Worker    case redeclare_while_condition_variable
543*35238bceSAndroid Build Coastguard Worker        version 300 es
544*35238bceSAndroid Build Coastguard Worker        expect compile_fail
545*35238bceSAndroid Build Coastguard Worker        both ""
546*35238bceSAndroid Build Coastguard Worker            #version 300 es
547*35238bceSAndroid Build Coastguard Worker            precision mediump float;
548*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
549*35238bceSAndroid Build Coastguard Worker
550*35238bceSAndroid Build Coastguard Worker            void main()
551*35238bceSAndroid Build Coastguard Worker            {
552*35238bceSAndroid Build Coastguard Worker                int a = 0;
553*35238bceSAndroid Build Coastguard Worker                while (int i = (a < 5))
554*35238bceSAndroid Build Coastguard Worker                {
555*35238bceSAndroid Build Coastguard Worker                    int i = 11;
556*35238bceSAndroid Build Coastguard Worker                    a += i;
557*35238bceSAndroid Build Coastguard Worker                }
558*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(0.0);
559*35238bceSAndroid Build Coastguard Worker            }
560*35238bceSAndroid Build Coastguard Worker        ""
561*35238bceSAndroid Build Coastguard Worker    end
562*35238bceSAndroid Build Coastguard Worker
563*35238bceSAndroid Build Coastguard Worker    case redefine_function
564*35238bceSAndroid Build Coastguard Worker        version 300 es
565*35238bceSAndroid Build Coastguard Worker        expect compile_fail
566*35238bceSAndroid Build Coastguard Worker        both ""
567*35238bceSAndroid Build Coastguard Worker            #version 300 es
568*35238bceSAndroid Build Coastguard Worker            precision mediump float;
569*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
570*35238bceSAndroid Build Coastguard Worker
571*35238bceSAndroid Build Coastguard Worker            float func(float x);
572*35238bceSAndroid Build Coastguard Worker
573*35238bceSAndroid Build Coastguard Worker            float func(float x) { return x + 1.0; }
574*35238bceSAndroid Build Coastguard Worker            float func(float x) { return x + 2.0; }
575*35238bceSAndroid Build Coastguard Worker
576*35238bceSAndroid Build Coastguard Worker            void main()
577*35238bceSAndroid Build Coastguard Worker            {
578*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(func(1.0));
579*35238bceSAndroid Build Coastguard Worker            }
580*35238bceSAndroid Build Coastguard Worker        ""
581*35238bceSAndroid Build Coastguard Worker    end
582*35238bceSAndroid Build Coastguard Worker
583*35238bceSAndroid Build Coastguard Worker    case redeclare_builtin
584*35238bceSAndroid Build Coastguard Worker        version 300 es
585*35238bceSAndroid Build Coastguard Worker        expect compile_fail
586*35238bceSAndroid Build Coastguard Worker        both ""
587*35238bceSAndroid Build Coastguard Worker            #version 300 es
588*35238bceSAndroid Build Coastguard Worker            precision mediump float;
589*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
590*35238bceSAndroid Build Coastguard Worker
591*35238bceSAndroid Build Coastguard Worker            float sin(float x);
592*35238bceSAndroid Build Coastguard Worker
593*35238bceSAndroid Build Coastguard Worker            void main()
594*35238bceSAndroid Build Coastguard Worker            {
595*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(sin(1.0));
596*35238bceSAndroid Build Coastguard Worker            }
597*35238bceSAndroid Build Coastguard Worker        ""
598*35238bceSAndroid Build Coastguard Worker    end
599*35238bceSAndroid Build Coastguard Worker
600*35238bceSAndroid Build Coastguard Worker    case redefine_builtin
601*35238bceSAndroid Build Coastguard Worker        version 300 es
602*35238bceSAndroid Build Coastguard Worker        expect compile_fail
603*35238bceSAndroid Build Coastguard Worker        both ""
604*35238bceSAndroid Build Coastguard Worker            #version 300 es
605*35238bceSAndroid Build Coastguard Worker            precision mediump float;
606*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
607*35238bceSAndroid Build Coastguard Worker
608*35238bceSAndroid Build Coastguard Worker            float sin(float x) { return x + 1.0; }
609*35238bceSAndroid Build Coastguard Worker
610*35238bceSAndroid Build Coastguard Worker            void main()
611*35238bceSAndroid Build Coastguard Worker            {
612*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(sin(1.0));
613*35238bceSAndroid Build Coastguard Worker            }
614*35238bceSAndroid Build Coastguard Worker        ""
615*35238bceSAndroid Build Coastguard Worker    end
616*35238bceSAndroid Build Coastguard Worker
617*35238bceSAndroid Build Coastguard Worker    case conflict_function_struct
618*35238bceSAndroid Build Coastguard Worker        version 300 es
619*35238bceSAndroid Build Coastguard Worker        expect compile_fail
620*35238bceSAndroid Build Coastguard Worker        both ""
621*35238bceSAndroid Build Coastguard Worker            #version 300 es
622*35238bceSAndroid Build Coastguard Worker            precision mediump float;
623*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
624*35238bceSAndroid Build Coastguard Worker
625*35238bceSAndroid Build Coastguard Worker            void f(int x);
626*35238bceSAndroid Build Coastguard Worker            struct f { int x; };
627*35238bceSAndroid Build Coastguard Worker
628*35238bceSAndroid Build Coastguard Worker            void main()
629*35238bceSAndroid Build Coastguard Worker            {
630*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1);
631*35238bceSAndroid Build Coastguard Worker            }
632*35238bceSAndroid Build Coastguard Worker        ""
633*35238bceSAndroid Build Coastguard Worker    end
634*35238bceSAndroid Build Coastguard Worker
635*35238bceSAndroid Build Coastguard Worker    case conflict_function_variable
636*35238bceSAndroid Build Coastguard Worker        version 300 es
637*35238bceSAndroid Build Coastguard Worker        expect compile_fail
638*35238bceSAndroid Build Coastguard Worker        both ""
639*35238bceSAndroid Build Coastguard Worker            #version 300 es
640*35238bceSAndroid Build Coastguard Worker            precision mediump float;
641*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
642*35238bceSAndroid Build Coastguard Worker
643*35238bceSAndroid Build Coastguard Worker            void f(int x);
644*35238bceSAndroid Build Coastguard Worker            float f;
645*35238bceSAndroid Build Coastguard Worker
646*35238bceSAndroid Build Coastguard Worker            void main()
647*35238bceSAndroid Build Coastguard Worker            {
648*35238bceSAndroid Build Coastguard Worker                f = 1.0;
649*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(f);
650*35238bceSAndroid Build Coastguard Worker            }
651*35238bceSAndroid Build Coastguard Worker        ""
652*35238bceSAndroid Build Coastguard Worker    end
653*35238bceSAndroid Build Coastguard Worker
654*35238bceSAndroid Build Coastguard Worker    case use_global_variable_before_declaration
655*35238bceSAndroid Build Coastguard Worker        version 300 es
656*35238bceSAndroid Build Coastguard Worker        expect compile_fail
657*35238bceSAndroid Build Coastguard Worker        both ""
658*35238bceSAndroid Build Coastguard Worker            #version 300 es
659*35238bceSAndroid Build Coastguard Worker            precision mediump float;
660*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
661*35238bceSAndroid Build Coastguard Worker
662*35238bceSAndroid Build Coastguard Worker            void func()
663*35238bceSAndroid Build Coastguard Worker            {
664*35238bceSAndroid Build Coastguard Worker                a = 2.0;
665*35238bceSAndroid Build Coastguard Worker            }
666*35238bceSAndroid Build Coastguard Worker
667*35238bceSAndroid Build Coastguard Worker            float a;
668*35238bceSAndroid Build Coastguard Worker
669*35238bceSAndroid Build Coastguard Worker            void main()
670*35238bceSAndroid Build Coastguard Worker            {
671*35238bceSAndroid Build Coastguard Worker                func();
672*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
673*35238bceSAndroid Build Coastguard Worker            }
674*35238bceSAndroid Build Coastguard Worker        ""
675*35238bceSAndroid Build Coastguard Worker    end
676*35238bceSAndroid Build Coastguard Worker
677*35238bceSAndroid Build Coastguard Worker    case use_local_variable_before_declaration
678*35238bceSAndroid Build Coastguard Worker        version 300 es
679*35238bceSAndroid Build Coastguard Worker        expect compile_fail
680*35238bceSAndroid Build Coastguard Worker        both ""
681*35238bceSAndroid Build Coastguard Worker            #version 300 es
682*35238bceSAndroid Build Coastguard Worker            precision mediump float;
683*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
684*35238bceSAndroid Build Coastguard Worker
685*35238bceSAndroid Build Coastguard Worker            void main()
686*35238bceSAndroid Build Coastguard Worker            {
687*35238bceSAndroid Build Coastguard Worker                float a = 1.0;
688*35238bceSAndroid Build Coastguard Worker                a = b;
689*35238bceSAndroid Build Coastguard Worker                float b = 2.0;
690*35238bceSAndroid Build Coastguard Worker
691*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
692*35238bceSAndroid Build Coastguard Worker            }
693*35238bceSAndroid Build Coastguard Worker        ""
694*35238bceSAndroid Build Coastguard Worker    end
695*35238bceSAndroid Build Coastguard Worker
696*35238bceSAndroid Build Coastguard Worker    case use_struct_type_before_declaration
697*35238bceSAndroid Build Coastguard Worker        version 300 es
698*35238bceSAndroid Build Coastguard Worker        expect compile_fail
699*35238bceSAndroid Build Coastguard Worker        both ""
700*35238bceSAndroid Build Coastguard Worker            #version 300 es
701*35238bceSAndroid Build Coastguard Worker            precision mediump float;
702*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
703*35238bceSAndroid Build Coastguard Worker
704*35238bceSAndroid Build Coastguard Worker            float func (float x) { return S(x).val; }
705*35238bceSAndroid Build Coastguard Worker            struct S { float val; };
706*35238bceSAndroid Build Coastguard Worker
707*35238bceSAndroid Build Coastguard Worker            void main()
708*35238bceSAndroid Build Coastguard Worker            {
709*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(func(1.0));
710*35238bceSAndroid Build Coastguard Worker            }
711*35238bceSAndroid Build Coastguard Worker        ""
712*35238bceSAndroid Build Coastguard Worker    end
713*35238bceSAndroid Build Coastguard Worker
714*35238bceSAndroid Build Coastguard Worker    case use_function_before_declaration
715*35238bceSAndroid Build Coastguard Worker        version 300 es
716*35238bceSAndroid Build Coastguard Worker        expect compile_fail
717*35238bceSAndroid Build Coastguard Worker        both ""
718*35238bceSAndroid Build Coastguard Worker            #version 300 es
719*35238bceSAndroid Build Coastguard Worker            precision mediump float;
720*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
721*35238bceSAndroid Build Coastguard Worker
722*35238bceSAndroid Build Coastguard Worker            float func (float x) { return bar(x); }
723*35238bceSAndroid Build Coastguard Worker            float bar (float x) { return x; }
724*35238bceSAndroid Build Coastguard Worker
725*35238bceSAndroid Build Coastguard Worker            void main()
726*35238bceSAndroid Build Coastguard Worker            {
727*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(func(1.0));
728*35238bceSAndroid Build Coastguard Worker            }
729*35238bceSAndroid Build Coastguard Worker        ""
730*35238bceSAndroid Build Coastguard Worker    end
731*35238bceSAndroid Build Coastguard Worker
732*35238bceSAndroid Build Coastguard Worker    case use_variable_from_block_in_outer_scope
733*35238bceSAndroid Build Coastguard Worker        version 300 es
734*35238bceSAndroid Build Coastguard Worker        expect compile_fail
735*35238bceSAndroid Build Coastguard Worker        both ""
736*35238bceSAndroid Build Coastguard Worker            #version 300 es
737*35238bceSAndroid Build Coastguard Worker            precision mediump float;
738*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
739*35238bceSAndroid Build Coastguard Worker
740*35238bceSAndroid Build Coastguard Worker            void main()
741*35238bceSAndroid Build Coastguard Worker            {
742*35238bceSAndroid Build Coastguard Worker                {
743*35238bceSAndroid Build Coastguard Worker                    float a = 1.0;
744*35238bceSAndroid Build Coastguard Worker                }
745*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
746*35238bceSAndroid Build Coastguard Worker            }
747*35238bceSAndroid Build Coastguard Worker        ""
748*35238bceSAndroid Build Coastguard Worker    end
749*35238bceSAndroid Build Coastguard Worker
750*35238bceSAndroid Build Coastguard Worker    case use_variable_from_if_in_outer_scope
751*35238bceSAndroid Build Coastguard Worker        version 300 es
752*35238bceSAndroid Build Coastguard Worker        expect compile_fail
753*35238bceSAndroid Build Coastguard Worker        both ""
754*35238bceSAndroid Build Coastguard Worker            #version 300 es
755*35238bceSAndroid Build Coastguard Worker            precision mediump float;
756*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
757*35238bceSAndroid Build Coastguard Worker
758*35238bceSAndroid Build Coastguard Worker            void main()
759*35238bceSAndroid Build Coastguard Worker            {
760*35238bceSAndroid Build Coastguard Worker                if (true)
761*35238bceSAndroid Build Coastguard Worker                    float a = 1.0;
762*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
763*35238bceSAndroid Build Coastguard Worker            }
764*35238bceSAndroid Build Coastguard Worker        ""
765*35238bceSAndroid Build Coastguard Worker    end
766*35238bceSAndroid Build Coastguard Worker
767*35238bceSAndroid Build Coastguard Worker    case use_variable_from_else_in_outer_scope
768*35238bceSAndroid Build Coastguard Worker        version 300 es
769*35238bceSAndroid Build Coastguard Worker        expect compile_fail
770*35238bceSAndroid Build Coastguard Worker        both ""
771*35238bceSAndroid Build Coastguard Worker            #version 300 es
772*35238bceSAndroid Build Coastguard Worker            precision mediump float;
773*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
774*35238bceSAndroid Build Coastguard Worker
775*35238bceSAndroid Build Coastguard Worker            void main()
776*35238bceSAndroid Build Coastguard Worker            {
777*35238bceSAndroid Build Coastguard Worker                if (false)
778*35238bceSAndroid Build Coastguard Worker                    float a = 1.0;
779*35238bceSAndroid Build Coastguard Worker                else
780*35238bceSAndroid Build Coastguard Worker                    float b = 2.0;
781*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(b);
782*35238bceSAndroid Build Coastguard Worker            }
783*35238bceSAndroid Build Coastguard Worker        ""
784*35238bceSAndroid Build Coastguard Worker    end
785*35238bceSAndroid Build Coastguard Worker
786*35238bceSAndroid Build Coastguard Worker    case use_variable_from_if_in_else
787*35238bceSAndroid Build Coastguard Worker        version 300 es
788*35238bceSAndroid Build Coastguard Worker        expect compile_fail
789*35238bceSAndroid Build Coastguard Worker        both ""
790*35238bceSAndroid Build Coastguard Worker            #version 300 es
791*35238bceSAndroid Build Coastguard Worker            precision mediump float;
792*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
793*35238bceSAndroid Build Coastguard Worker
794*35238bceSAndroid Build Coastguard Worker            void main()
795*35238bceSAndroid Build Coastguard Worker            {
796*35238bceSAndroid Build Coastguard Worker                float a = 1.0;
797*35238bceSAndroid Build Coastguard Worker                if (true)
798*35238bceSAndroid Build Coastguard Worker                {
799*35238bceSAndroid Build Coastguard Worker                    float b = 2.0;
800*35238bceSAndroid Build Coastguard Worker                }
801*35238bceSAndroid Build Coastguard Worker                else
802*35238bceSAndroid Build Coastguard Worker                {
803*35238bceSAndroid Build Coastguard Worker                    a = b;
804*35238bceSAndroid Build Coastguard Worker                }
805*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(a);
806*35238bceSAndroid Build Coastguard Worker            }
807*35238bceSAndroid Build Coastguard Worker        ""
808*35238bceSAndroid Build Coastguard Worker    end
809*35238bceSAndroid Build Coastguard Worker
810*35238bceSAndroid Build Coastguard Worker    case use_variable_from_for_init_statement_in_outer_scope
811*35238bceSAndroid Build Coastguard Worker        version 300 es
812*35238bceSAndroid Build Coastguard Worker        expect compile_fail
813*35238bceSAndroid Build Coastguard Worker        both ""
814*35238bceSAndroid Build Coastguard Worker            #version 300 es
815*35238bceSAndroid Build Coastguard Worker            precision mediump float;
816*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
817*35238bceSAndroid Build Coastguard Worker
818*35238bceSAndroid Build Coastguard Worker            void main()
819*35238bceSAndroid Build Coastguard Worker            {
820*35238bceSAndroid Build Coastguard Worker                float x = 0.0;
821*35238bceSAndroid Build Coastguard Worker                for (int i = 0; i < 10; i++)
822*35238bceSAndroid Build Coastguard Worker                {
823*35238bceSAndroid Build Coastguard Worker                    x += sin(i);
824*35238bceSAndroid Build Coastguard Worker                }
825*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(float(i));
826*35238bceSAndroid Build Coastguard Worker            }
827*35238bceSAndroid Build Coastguard Worker        ""
828*35238bceSAndroid Build Coastguard Worker    end
829*35238bceSAndroid Build Coastguard Worker
830*35238bceSAndroid Build Coastguard Worker    case use_variable_from_while_condition_in_outer_scope
831*35238bceSAndroid Build Coastguard Worker        version 300 es
832*35238bceSAndroid Build Coastguard Worker        expect compile_fail
833*35238bceSAndroid Build Coastguard Worker        both ""
834*35238bceSAndroid Build Coastguard Worker            #version 300 es
835*35238bceSAndroid Build Coastguard Worker            precision mediump float;
836*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
837*35238bceSAndroid Build Coastguard Worker
838*35238bceSAndroid Build Coastguard Worker            void main()
839*35238bceSAndroid Build Coastguard Worker            {
840*35238bceSAndroid Build Coastguard Worker                int a = 1;
841*35238bceSAndroid Build Coastguard Worker                while (bool b = (a == 1))
842*35238bceSAndroid Build Coastguard Worker                {
843*35238bceSAndroid Build Coastguard Worker                    a++;
844*35238bceSAndroid Build Coastguard Worker                }
845*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(float(b));
846*35238bceSAndroid Build Coastguard Worker            }
847*35238bceSAndroid Build Coastguard Worker        ""
848*35238bceSAndroid Build Coastguard Worker    end
849*35238bceSAndroid Build Coastguard Worker
850*35238bceSAndroid Build Coastguard Worker    case use_parameter_names_from_function_declaration
851*35238bceSAndroid Build Coastguard Worker        version 300 es
852*35238bceSAndroid Build Coastguard Worker        expect compile_fail
853*35238bceSAndroid Build Coastguard Worker        both ""
854*35238bceSAndroid Build Coastguard Worker            #version 300 es
855*35238bceSAndroid Build Coastguard Worker            precision mediump float;
856*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
857*35238bceSAndroid Build Coastguard Worker
858*35238bceSAndroid Build Coastguard Worker            float func(float a, float b);
859*35238bceSAndroid Build Coastguard Worker
860*35238bceSAndroid Build Coastguard Worker            float func(float x, float y) { return a+b; }
861*35238bceSAndroid Build Coastguard Worker
862*35238bceSAndroid Build Coastguard Worker            void main()
863*35238bceSAndroid Build Coastguard Worker            {
864*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(func(1.0, 2.0));
865*35238bceSAndroid Build Coastguard Worker            }
866*35238bceSAndroid Build Coastguard Worker        ""
867*35238bceSAndroid Build Coastguard Worker    end
868*35238bceSAndroid Build Coastguard Worker
869*35238bceSAndroid Build Coastguard Worker    case variable_not_visible_in_own_initializer
870*35238bceSAndroid Build Coastguard Worker        version 300 es
871*35238bceSAndroid Build Coastguard Worker        expect compile_fail
872*35238bceSAndroid Build Coastguard Worker        both ""
873*35238bceSAndroid Build Coastguard Worker            #version 300 es
874*35238bceSAndroid Build Coastguard Worker            precision mediump float;
875*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
876*35238bceSAndroid Build Coastguard Worker
877*35238bceSAndroid Build Coastguard Worker            void main()
878*35238bceSAndroid Build Coastguard Worker            {
879*35238bceSAndroid Build Coastguard Worker                float x = x;
880*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(x);
881*35238bceSAndroid Build Coastguard Worker            }
882*35238bceSAndroid Build Coastguard Worker        ""
883*35238bceSAndroid Build Coastguard Worker    end
884*35238bceSAndroid Build Coastguard Worker
885*35238bceSAndroid Build Coastguard Worker    case local_variable_hides_function_parameter
886*35238bceSAndroid Build Coastguard Worker        version 300 es
887*35238bceSAndroid Build Coastguard Worker        expect compile_fail
888*35238bceSAndroid Build Coastguard Worker        both ""
889*35238bceSAndroid Build Coastguard Worker            #version 300 es
890*35238bceSAndroid Build Coastguard Worker            precision mediump float;
891*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
892*35238bceSAndroid Build Coastguard Worker            float func (float inp, float x) { int x = 5.0; return inp + x - 5.0; }
893*35238bceSAndroid Build Coastguard Worker
894*35238bceSAndroid Build Coastguard Worker            void main()
895*35238bceSAndroid Build Coastguard Worker            {
896*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(func(1.0, 2.0));
897*35238bceSAndroid Build Coastguard Worker            }
898*35238bceSAndroid Build Coastguard Worker        ""
899*35238bceSAndroid Build Coastguard Worker    end
900*35238bceSAndroid Build Coastguard Worker
901*35238bceSAndroid Build Coastguard Workerend # invalid
902