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