1e5c31af7Sopenharmony_cigroup if "If Statements"
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci	case single_statement
4e5c31af7Sopenharmony_ci		version 300 es
5e5c31af7Sopenharmony_ci		values
6e5c31af7Sopenharmony_ci		{
7e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
8e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
9e5c31af7Sopenharmony_ci		}
10e5c31af7Sopenharmony_ci
11e5c31af7Sopenharmony_ci		both ""
12e5c31af7Sopenharmony_ci			#version 300 es
13e5c31af7Sopenharmony_ci			precision mediump float;
14e5c31af7Sopenharmony_ci			${DECLARATIONS}
15e5c31af7Sopenharmony_ci			void main()
16e5c31af7Sopenharmony_ci			{
17e5c31af7Sopenharmony_ci				out0 = 0.0;
18e5c31af7Sopenharmony_ci				if (in0 >= 1.0)
19e5c31af7Sopenharmony_ci					out0 = 1.0;
20e5c31af7Sopenharmony_ci				${OUTPUT}
21e5c31af7Sopenharmony_ci			}
22e5c31af7Sopenharmony_ci		""
23e5c31af7Sopenharmony_ci	end
24e5c31af7Sopenharmony_ci
25e5c31af7Sopenharmony_ci	case compound_statement
26e5c31af7Sopenharmony_ci		version 300 es
27e5c31af7Sopenharmony_ci		values
28e5c31af7Sopenharmony_ci		{
29e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
30e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
31e5c31af7Sopenharmony_ci			output float out1 = [ 1.0 | 0.0 | 0.0 ];
32e5c31af7Sopenharmony_ci		}
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_ci		both ""
35e5c31af7Sopenharmony_ci			#version 300 es
36e5c31af7Sopenharmony_ci			precision mediump float;
37e5c31af7Sopenharmony_ci			${DECLARATIONS}
38e5c31af7Sopenharmony_ci			void main()
39e5c31af7Sopenharmony_ci			{
40e5c31af7Sopenharmony_ci				out0 = 0.0;
41e5c31af7Sopenharmony_ci				out1 = 1.0;
42e5c31af7Sopenharmony_ci				if (in0 >= 1.0)
43e5c31af7Sopenharmony_ci				{
44e5c31af7Sopenharmony_ci					out0 = 1.0;
45e5c31af7Sopenharmony_ci					out1 = 0.0;
46e5c31af7Sopenharmony_ci				}
47e5c31af7Sopenharmony_ci				${OUTPUT}
48e5c31af7Sopenharmony_ci			}
49e5c31af7Sopenharmony_ci		""
50e5c31af7Sopenharmony_ci	end
51e5c31af7Sopenharmony_ci
52e5c31af7Sopenharmony_ci	case sequence_statements
53e5c31af7Sopenharmony_ci		version 300 es
54e5c31af7Sopenharmony_ci		values
55e5c31af7Sopenharmony_ci		{
56e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
57e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
58e5c31af7Sopenharmony_ci			output float out1 = [ 1.0 | 0.0 | 0.0 ];
59e5c31af7Sopenharmony_ci		}
60e5c31af7Sopenharmony_ci
61e5c31af7Sopenharmony_ci		both ""
62e5c31af7Sopenharmony_ci			#version 300 es
63e5c31af7Sopenharmony_ci			precision mediump float;
64e5c31af7Sopenharmony_ci			${DECLARATIONS}
65e5c31af7Sopenharmony_ci			void main()
66e5c31af7Sopenharmony_ci			{
67e5c31af7Sopenharmony_ci				out0 = 0.0;
68e5c31af7Sopenharmony_ci				out1 = 1.0;
69e5c31af7Sopenharmony_ci				if (in0 >= 1.0)
70e5c31af7Sopenharmony_ci					out0 = 1.0, out1 = 0.0;
71e5c31af7Sopenharmony_ci				${OUTPUT}
72e5c31af7Sopenharmony_ci			}
73e5c31af7Sopenharmony_ci		""
74e5c31af7Sopenharmony_ci	end
75e5c31af7Sopenharmony_ci
76e5c31af7Sopenharmony_ci	case sequence_condition
77e5c31af7Sopenharmony_ci		version 300 es
78e5c31af7Sopenharmony_ci		values
79e5c31af7Sopenharmony_ci		{
80e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
81e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
82e5c31af7Sopenharmony_ci			output float out1 = [ 1.0 | 0.0 | 0.0 ];
83e5c31af7Sopenharmony_ci		}
84e5c31af7Sopenharmony_ci
85e5c31af7Sopenharmony_ci		both ""
86e5c31af7Sopenharmony_ci			#version 300 es
87e5c31af7Sopenharmony_ci			precision mediump float;
88e5c31af7Sopenharmony_ci			${DECLARATIONS}
89e5c31af7Sopenharmony_ci			void main()
90e5c31af7Sopenharmony_ci			{
91e5c31af7Sopenharmony_ci				out0 = 0.0;
92e5c31af7Sopenharmony_ci				out1 = 1.0;
93e5c31af7Sopenharmony_ci				if (false, in0 >= 1.0)
94e5c31af7Sopenharmony_ci					out0 = 1.0, out1 = 0.0;
95e5c31af7Sopenharmony_ci				${OUTPUT}
96e5c31af7Sopenharmony_ci			}
97e5c31af7Sopenharmony_ci		""
98e5c31af7Sopenharmony_ci	end
99e5c31af7Sopenharmony_ci
100e5c31af7Sopenharmony_ci	case complex_condition
101e5c31af7Sopenharmony_ci		version 300 es
102e5c31af7Sopenharmony_ci		values
103e5c31af7Sopenharmony_ci		{
104e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
105e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
106e5c31af7Sopenharmony_ci			output float out1 = [ 1.0 | 0.0 | 0.0 ];
107e5c31af7Sopenharmony_ci		}
108e5c31af7Sopenharmony_ci
109e5c31af7Sopenharmony_ci		both ""
110e5c31af7Sopenharmony_ci			#version 300 es
111e5c31af7Sopenharmony_ci			precision mediump float;
112e5c31af7Sopenharmony_ci			${DECLARATIONS}
113e5c31af7Sopenharmony_ci			void main()
114e5c31af7Sopenharmony_ci			{
115e5c31af7Sopenharmony_ci				out0 = 0.0;
116e5c31af7Sopenharmony_ci				out1 = 1.0;
117e5c31af7Sopenharmony_ci				if (false || (in0 >= 1.0) && (in0 - 2.0*in0 < 0.0))
118e5c31af7Sopenharmony_ci					out0 = 1.0, out1 = 0.0;
119e5c31af7Sopenharmony_ci				${OUTPUT}
120e5c31af7Sopenharmony_ci			}
121e5c31af7Sopenharmony_ci		""
122e5c31af7Sopenharmony_ci	end
123e5c31af7Sopenharmony_ci
124e5c31af7Sopenharmony_ci	case if_else
125e5c31af7Sopenharmony_ci		version 300 es
126e5c31af7Sopenharmony_ci		values
127e5c31af7Sopenharmony_ci		{
128e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
129e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 1.0 ];
130e5c31af7Sopenharmony_ci		}
131e5c31af7Sopenharmony_ci
132e5c31af7Sopenharmony_ci		both ""
133e5c31af7Sopenharmony_ci			#version 300 es
134e5c31af7Sopenharmony_ci			precision mediump float;
135e5c31af7Sopenharmony_ci			${DECLARATIONS}
136e5c31af7Sopenharmony_ci			void main()
137e5c31af7Sopenharmony_ci			{
138e5c31af7Sopenharmony_ci				if (in0 >= 1.0)
139e5c31af7Sopenharmony_ci					out0 = 1.0;
140e5c31af7Sopenharmony_ci				else
141e5c31af7Sopenharmony_ci					out0 = 0.0;
142e5c31af7Sopenharmony_ci				${OUTPUT}
143e5c31af7Sopenharmony_ci			}
144e5c31af7Sopenharmony_ci		""
145e5c31af7Sopenharmony_ci	end
146e5c31af7Sopenharmony_ci
147e5c31af7Sopenharmony_ci	case if_elseif
148e5c31af7Sopenharmony_ci		version 300 es
149e5c31af7Sopenharmony_ci		values
150e5c31af7Sopenharmony_ci		{
151e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
152e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 2.0 ];
153e5c31af7Sopenharmony_ci		}
154e5c31af7Sopenharmony_ci
155e5c31af7Sopenharmony_ci		both ""
156e5c31af7Sopenharmony_ci			#version 300 es
157e5c31af7Sopenharmony_ci			precision mediump float;
158e5c31af7Sopenharmony_ci			${DECLARATIONS}
159e5c31af7Sopenharmony_ci			void main()
160e5c31af7Sopenharmony_ci			{
161e5c31af7Sopenharmony_ci				out0 = 0.0;
162e5c31af7Sopenharmony_ci				if (in0 >= 2.0)
163e5c31af7Sopenharmony_ci					out0 = 2.0;
164e5c31af7Sopenharmony_ci				else if (in0 >= 1.0)
165e5c31af7Sopenharmony_ci					out0 = 1.0;
166e5c31af7Sopenharmony_ci				${OUTPUT}
167e5c31af7Sopenharmony_ci			}
168e5c31af7Sopenharmony_ci		""
169e5c31af7Sopenharmony_ci	end
170e5c31af7Sopenharmony_ci
171e5c31af7Sopenharmony_ci	case if_elseif_else
172e5c31af7Sopenharmony_ci		version 300 es
173e5c31af7Sopenharmony_ci		values
174e5c31af7Sopenharmony_ci		{
175e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
176e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 2.0 ];
177e5c31af7Sopenharmony_ci		}
178e5c31af7Sopenharmony_ci
179e5c31af7Sopenharmony_ci		both ""
180e5c31af7Sopenharmony_ci			#version 300 es
181e5c31af7Sopenharmony_ci			precision mediump float;
182e5c31af7Sopenharmony_ci			${DECLARATIONS}
183e5c31af7Sopenharmony_ci			void main()
184e5c31af7Sopenharmony_ci			{
185e5c31af7Sopenharmony_ci				if (in0 >= 2.0)
186e5c31af7Sopenharmony_ci					out0 = 2.0;
187e5c31af7Sopenharmony_ci				else if (in0 >= 1.0)
188e5c31af7Sopenharmony_ci					out0 = 1.0;
189e5c31af7Sopenharmony_ci				else
190e5c31af7Sopenharmony_ci					out0 = 0.0;
191e5c31af7Sopenharmony_ci				${OUTPUT}
192e5c31af7Sopenharmony_ci			}
193e5c31af7Sopenharmony_ci		""
194e5c31af7Sopenharmony_ci	end
195e5c31af7Sopenharmony_ci
196e5c31af7Sopenharmony_ci	case mixed_if_elseif_else
197e5c31af7Sopenharmony_ci		version 300 es
198e5c31af7Sopenharmony_ci		values
199e5c31af7Sopenharmony_ci		{
200e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 ];
201e5c31af7Sopenharmony_ci			output float out0 = [ 0.0 | 1.0 | 2.0 ];
202e5c31af7Sopenharmony_ci		}
203e5c31af7Sopenharmony_ci
204e5c31af7Sopenharmony_ci		both ""
205e5c31af7Sopenharmony_ci			#version 300 es
206e5c31af7Sopenharmony_ci			precision mediump float;
207e5c31af7Sopenharmony_ci			${DECLARATIONS}
208e5c31af7Sopenharmony_ci			void main()
209e5c31af7Sopenharmony_ci			{
210e5c31af7Sopenharmony_ci				if (in0 >= 2.0)
211e5c31af7Sopenharmony_ci				{
212e5c31af7Sopenharmony_ci					out0 = 2.0;
213e5c31af7Sopenharmony_ci				}
214e5c31af7Sopenharmony_ci				else if (in0 >= 1.0)
215e5c31af7Sopenharmony_ci					out0 = 2.0, out0 = 1.0;
216e5c31af7Sopenharmony_ci				else
217e5c31af7Sopenharmony_ci					out0 = 0.0;
218e5c31af7Sopenharmony_ci				${OUTPUT}
219e5c31af7Sopenharmony_ci			}
220e5c31af7Sopenharmony_ci		""
221e5c31af7Sopenharmony_ci	end
222e5c31af7Sopenharmony_ci
223e5c31af7Sopenharmony_ci	case constant_conditional_assignment_to_matrix
224e5c31af7Sopenharmony_ci		version 300 es
225e5c31af7Sopenharmony_ci		vertex ""
226e5c31af7Sopenharmony_ci			#version 300 es
227e5c31af7Sopenharmony_ci                        // This variant doesn't provoke the crash seen in the versions below.
228e5c31af7Sopenharmony_ci			${VERTEX_DECLARATIONS}
229e5c31af7Sopenharmony_ci			out mediump float FragVarying;
230e5c31af7Sopenharmony_ci			const float in0 = 0.0;
231e5c31af7Sopenharmony_ci			void main()
232e5c31af7Sopenharmony_ci			{
233e5c31af7Sopenharmony_ci				mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
234e5c31af7Sopenharmony_ci				if (in0 == 1.0)
235e5c31af7Sopenharmony_ci				{
236e5c31af7Sopenharmony_ci					projectionMatrix[0][0] = 1.0;
237e5c31af7Sopenharmony_ci				}
238e5c31af7Sopenharmony_ci
239e5c31af7Sopenharmony_ci				FragVarying = 1.0;
240e5c31af7Sopenharmony_ci				gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
241e5c31af7Sopenharmony_ci			}
242e5c31af7Sopenharmony_ci		""
243e5c31af7Sopenharmony_ci		fragment ""
244e5c31af7Sopenharmony_ci			#version 300 es
245e5c31af7Sopenharmony_ci			precision mediump float;
246e5c31af7Sopenharmony_ci			${FRAGMENT_DECLARATIONS}
247e5c31af7Sopenharmony_ci			in mediump float FragVarying;
248e5c31af7Sopenharmony_ci			void main()
249e5c31af7Sopenharmony_ci			{
250e5c31af7Sopenharmony_ci				${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
251e5c31af7Sopenharmony_ci			}
252e5c31af7Sopenharmony_ci		""
253e5c31af7Sopenharmony_ci	end
254e5c31af7Sopenharmony_ci
255e5c31af7Sopenharmony_ci	case input_conditional_assignment_to_matrix
256e5c31af7Sopenharmony_ci		version 300 es
257e5c31af7Sopenharmony_ci		values
258e5c31af7Sopenharmony_ci		{
259e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 ];
260e5c31af7Sopenharmony_ci		}
261e5c31af7Sopenharmony_ci		vertex ""
262e5c31af7Sopenharmony_ci			#version 300 es
263e5c31af7Sopenharmony_ci			${VERTEX_DECLARATIONS}
264e5c31af7Sopenharmony_ci			out mediump float FragVarying;  // Necessary to reproduce.
265e5c31af7Sopenharmony_ci			void main()
266e5c31af7Sopenharmony_ci			{
267e5c31af7Sopenharmony_ci				// Crashes with mat4 as well. Does not crash with vectors.
268e5c31af7Sopenharmony_ci				mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
269e5c31af7Sopenharmony_ci				// Testing a non-constant variable is necessary.
270e5c31af7Sopenharmony_ci				if (in0 == 1.0)
271e5c31af7Sopenharmony_ci				{
272e5c31af7Sopenharmony_ci					// Using the matrix variable appears necessary.
273e5c31af7Sopenharmony_ci					projectionMatrix[0][0] = 1.0;
274e5c31af7Sopenharmony_ci				}
275e5c31af7Sopenharmony_ci
276e5c31af7Sopenharmony_ci				FragVarying = 1.0;
277e5c31af7Sopenharmony_ci				// Referencing the matrix is necessary though clearly the compiler
278e5c31af7Sopenharmony_ci				// doesn't realize the assignment is useless.
279e5c31af7Sopenharmony_ci				gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
280e5c31af7Sopenharmony_ci			}
281e5c31af7Sopenharmony_ci		""
282e5c31af7Sopenharmony_ci		fragment ""
283e5c31af7Sopenharmony_ci			#version 300 es
284e5c31af7Sopenharmony_ci			precision mediump float;
285e5c31af7Sopenharmony_ci			${FRAGMENT_DECLARATIONS}
286e5c31af7Sopenharmony_ci			in mediump float FragVarying;
287e5c31af7Sopenharmony_ci			void main()
288e5c31af7Sopenharmony_ci			{
289e5c31af7Sopenharmony_ci				${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
290e5c31af7Sopenharmony_ci			}
291e5c31af7Sopenharmony_ci		""
292e5c31af7Sopenharmony_ci	end
293e5c31af7Sopenharmony_ci
294e5c31af7Sopenharmony_ci	case uniform_conditional_assignment_to_matrix
295e5c31af7Sopenharmony_ci		version 300 es
296e5c31af7Sopenharmony_ci		values
297e5c31af7Sopenharmony_ci		{
298e5c31af7Sopenharmony_ci			uniform float uni0 = [ 0.0 ];
299e5c31af7Sopenharmony_ci		}
300e5c31af7Sopenharmony_ci		vertex ""
301e5c31af7Sopenharmony_ci			#version 300 es
302e5c31af7Sopenharmony_ci			precision mediump float;
303e5c31af7Sopenharmony_ci			${VERTEX_DECLARATIONS}
304e5c31af7Sopenharmony_ci			out mediump float FragVarying;  // Necessary to reproduce.
305e5c31af7Sopenharmony_ci			void main()
306e5c31af7Sopenharmony_ci			{
307e5c31af7Sopenharmony_ci				// Crashes with mat4 as well. Does not crash with vectors.
308e5c31af7Sopenharmony_ci				mat2 projectionMatrix = mat2(0.0, 0.0, 0.0, 0.0);
309e5c31af7Sopenharmony_ci				// Testing a non-constant variable is necessary.
310e5c31af7Sopenharmony_ci				if (uni0 == 1.0)
311e5c31af7Sopenharmony_ci				{
312e5c31af7Sopenharmony_ci					// Using the matrix variable appears necessary.
313e5c31af7Sopenharmony_ci					projectionMatrix[0][0] = 1.0;
314e5c31af7Sopenharmony_ci				}
315e5c31af7Sopenharmony_ci
316e5c31af7Sopenharmony_ci				FragVarying = 1.0;
317e5c31af7Sopenharmony_ci				// Referencing the matrix is necessary though clearly the compiler
318e5c31af7Sopenharmony_ci				// doesn't realize the assignment is useless.
319e5c31af7Sopenharmony_ci				gl_Position = dEQP_Position + vec4(projectionMatrix[1][0], 0.0, 0.0, 0.0);
320e5c31af7Sopenharmony_ci			}
321e5c31af7Sopenharmony_ci		""
322e5c31af7Sopenharmony_ci		fragment ""
323e5c31af7Sopenharmony_ci			#version 300 es
324e5c31af7Sopenharmony_ci			precision mediump float;
325e5c31af7Sopenharmony_ci			${FRAGMENT_DECLARATIONS}
326e5c31af7Sopenharmony_ci			in mediump float FragVarying;
327e5c31af7Sopenharmony_ci			void main()
328e5c31af7Sopenharmony_ci			{
329e5c31af7Sopenharmony_ci				${FRAG_COLOR} = vec4(FragVarying, 1.0, 1.0, 1.0);
330e5c31af7Sopenharmony_ci			}
331e5c31af7Sopenharmony_ci		""
332e5c31af7Sopenharmony_ci	end
333e5c31af7Sopenharmony_ci
334e5c31af7Sopenharmony_ciend # if
335e5c31af7Sopenharmony_ci
336e5c31af7Sopenharmony_cigroup invalid_if "Invalid If Conditionals"
337e5c31af7Sopenharmony_ci
338e5c31af7Sopenharmony_ci	case missing_parenthesis
339e5c31af7Sopenharmony_ci		version 300 es
340e5c31af7Sopenharmony_ci		expect compile_fail
341e5c31af7Sopenharmony_ci		both ""
342e5c31af7Sopenharmony_ci			#version 300 es
343e5c31af7Sopenharmony_ci			precision mediump float;
344e5c31af7Sopenharmony_ci			${DECLARATIONS}
345e5c31af7Sopenharmony_ci			void main()
346e5c31af7Sopenharmony_ci			{
347e5c31af7Sopenharmony_ci				if true
348e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
349e5c31af7Sopenharmony_ci			}
350e5c31af7Sopenharmony_ci		""
351e5c31af7Sopenharmony_ci	end
352e5c31af7Sopenharmony_ci
353e5c31af7Sopenharmony_ci	case unclosed_parenthesis
354e5c31af7Sopenharmony_ci		version 300 es
355e5c31af7Sopenharmony_ci		expect compile_fail
356e5c31af7Sopenharmony_ci		both ""
357e5c31af7Sopenharmony_ci			#version 300 es
358e5c31af7Sopenharmony_ci			precision mediump float;
359e5c31af7Sopenharmony_ci			${DECLARATIONS}
360e5c31af7Sopenharmony_ci			void main()
361e5c31af7Sopenharmony_ci			{
362e5c31af7Sopenharmony_ci				if (true
363e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
364e5c31af7Sopenharmony_ci			}
365e5c31af7Sopenharmony_ci		""
366e5c31af7Sopenharmony_ci	end
367e5c31af7Sopenharmony_ci
368e5c31af7Sopenharmony_ci	case int_condition
369e5c31af7Sopenharmony_ci		version 300 es
370e5c31af7Sopenharmony_ci		expect compile_fail
371e5c31af7Sopenharmony_ci		both ""
372e5c31af7Sopenharmony_ci			#version 300 es
373e5c31af7Sopenharmony_ci			precision mediump float;
374e5c31af7Sopenharmony_ci			${DECLARATIONS}
375e5c31af7Sopenharmony_ci			void main()
376e5c31af7Sopenharmony_ci			{
377e5c31af7Sopenharmony_ci				if (5)
378e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
379e5c31af7Sopenharmony_ci			}
380e5c31af7Sopenharmony_ci		""
381e5c31af7Sopenharmony_ci	end
382e5c31af7Sopenharmony_ci
383e5c31af7Sopenharmony_ci	case int_zero_condition
384e5c31af7Sopenharmony_ci		version 300 es
385e5c31af7Sopenharmony_ci		expect compile_fail
386e5c31af7Sopenharmony_ci		both ""
387e5c31af7Sopenharmony_ci			#version 300 es
388e5c31af7Sopenharmony_ci			precision mediump float;
389e5c31af7Sopenharmony_ci			${DECLARATIONS}
390e5c31af7Sopenharmony_ci			void main()
391e5c31af7Sopenharmony_ci			{
392e5c31af7Sopenharmony_ci				if (0)
393e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
394e5c31af7Sopenharmony_ci			}
395e5c31af7Sopenharmony_ci		""
396e5c31af7Sopenharmony_ci	end
397e5c31af7Sopenharmony_ci
398e5c31af7Sopenharmony_ci	case int_one_condition
399e5c31af7Sopenharmony_ci		version 300 es
400e5c31af7Sopenharmony_ci		expect compile_fail
401e5c31af7Sopenharmony_ci		both ""
402e5c31af7Sopenharmony_ci			#version 300 es
403e5c31af7Sopenharmony_ci			precision mediump float;
404e5c31af7Sopenharmony_ci			${DECLARATIONS}
405e5c31af7Sopenharmony_ci			void main()
406e5c31af7Sopenharmony_ci			{
407e5c31af7Sopenharmony_ci				if (1)
408e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
409e5c31af7Sopenharmony_ci			}
410e5c31af7Sopenharmony_ci		""
411e5c31af7Sopenharmony_ci	end
412e5c31af7Sopenharmony_ci
413e5c31af7Sopenharmony_ci	case int_uniform_condition
414e5c31af7Sopenharmony_ci		version 300 es
415e5c31af7Sopenharmony_ci		expect compile_fail
416e5c31af7Sopenharmony_ci
417e5c31af7Sopenharmony_ci		both ""
418e5c31af7Sopenharmony_ci			#version 300 es
419e5c31af7Sopenharmony_ci			precision mediump float;
420e5c31af7Sopenharmony_ci			precision mediump int;
421e5c31af7Sopenharmony_ci			uniform int u0;
422e5c31af7Sopenharmony_ci			${DECLARATIONS}
423e5c31af7Sopenharmony_ci			void main()
424e5c31af7Sopenharmony_ci			{
425e5c31af7Sopenharmony_ci				if (u0)
426e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
427e5c31af7Sopenharmony_ci			}
428e5c31af7Sopenharmony_ci		""
429e5c31af7Sopenharmony_ci	end
430e5c31af7Sopenharmony_ci
431e5c31af7Sopenharmony_ci	case float_condition
432e5c31af7Sopenharmony_ci		version 300 es
433e5c31af7Sopenharmony_ci		expect compile_fail
434e5c31af7Sopenharmony_ci		both ""
435e5c31af7Sopenharmony_ci			#version 300 es
436e5c31af7Sopenharmony_ci			precision mediump float;
437e5c31af7Sopenharmony_ci			${DECLARATIONS}
438e5c31af7Sopenharmony_ci			void main()
439e5c31af7Sopenharmony_ci			{
440e5c31af7Sopenharmony_ci				if (5.0)
441e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
442e5c31af7Sopenharmony_ci			}
443e5c31af7Sopenharmony_ci		""
444e5c31af7Sopenharmony_ci	end
445e5c31af7Sopenharmony_ci
446e5c31af7Sopenharmony_ci	case float_zero_condition
447e5c31af7Sopenharmony_ci		version 300 es
448e5c31af7Sopenharmony_ci		expect compile_fail
449e5c31af7Sopenharmony_ci		both ""
450e5c31af7Sopenharmony_ci			#version 300 es
451e5c31af7Sopenharmony_ci			precision mediump float;
452e5c31af7Sopenharmony_ci			${DECLARATIONS}
453e5c31af7Sopenharmony_ci			void main()
454e5c31af7Sopenharmony_ci			{
455e5c31af7Sopenharmony_ci				if (0.0)
456e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
457e5c31af7Sopenharmony_ci			}
458e5c31af7Sopenharmony_ci		""
459e5c31af7Sopenharmony_ci	end
460e5c31af7Sopenharmony_ci
461e5c31af7Sopenharmony_ci	case float_one_condition
462e5c31af7Sopenharmony_ci		version 300 es
463e5c31af7Sopenharmony_ci		expect compile_fail
464e5c31af7Sopenharmony_ci		both ""
465e5c31af7Sopenharmony_ci			#version 300 es
466e5c31af7Sopenharmony_ci			precision mediump float;
467e5c31af7Sopenharmony_ci			${DECLARATIONS}
468e5c31af7Sopenharmony_ci			void main()
469e5c31af7Sopenharmony_ci			{
470e5c31af7Sopenharmony_ci				if (1.0)
471e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
472e5c31af7Sopenharmony_ci			}
473e5c31af7Sopenharmony_ci		""
474e5c31af7Sopenharmony_ci	end
475e5c31af7Sopenharmony_ci
476e5c31af7Sopenharmony_ci	case sampler_condition
477e5c31af7Sopenharmony_ci		version 300 es
478e5c31af7Sopenharmony_ci		expect compile_fail
479e5c31af7Sopenharmony_ci		both ""
480e5c31af7Sopenharmony_ci			#version 300 es
481e5c31af7Sopenharmony_ci			precision mediump float;
482e5c31af7Sopenharmony_ci			uniform sampler2D s0;
483e5c31af7Sopenharmony_ci			${DECLARATIONS}
484e5c31af7Sopenharmony_ci			void main()
485e5c31af7Sopenharmony_ci			{
486e5c31af7Sopenharmony_ci				if (s0)
487e5c31af7Sopenharmony_ci					${POSITION_FRAG_COLOR} = vec4(1.0);
488e5c31af7Sopenharmony_ci			}
489e5c31af7Sopenharmony_ci		""
490e5c31af7Sopenharmony_ci	end
491e5c31af7Sopenharmony_ci
492e5c31af7Sopenharmony_ciend # invalid_if
493