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