1e5c31af7Sopenharmony_cigroup basic "Basic Tests"
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci	case correct_phases
4e5c31af7Sopenharmony_ci		version 300 es
5e5c31af7Sopenharmony_ci		expect compile_fail
6e5c31af7Sopenharmony_ci		both ""
7e5c31af7Sopenharmony_ci			#version 300 es
8e5c31af7Sopenharmony_ci			#define e +1
9e5c31af7Sopenharmony_ci			${DECLARATIONS}
10e5c31af7Sopenharmony_ci			void main()
11e5c31af7Sopenharmony_ci			{
12e5c31af7Sopenharmony_ci				mediump int n = 1e;
13e5c31af7Sopenharmony_ci				${OUTPUT}
14e5c31af7Sopenharmony_ci			}
15e5c31af7Sopenharmony_ci		""
16e5c31af7Sopenharmony_ci	end
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ci	case invalid_identifier
19e5c31af7Sopenharmony_ci		version 300 es
20e5c31af7Sopenharmony_ci		expect compile_fail
21e5c31af7Sopenharmony_ci		both ""
22e5c31af7Sopenharmony_ci			#version 300 es
23e5c31af7Sopenharmony_ci			#define e +1
24e5c31af7Sopenharmony_ci			${DECLARATIONS}
25e5c31af7Sopenharmony_ci			void main()
26e5c31af7Sopenharmony_ci			{
27e5c31af7Sopenharmony_ci				mediump int 1xyz = 1;
28e5c31af7Sopenharmony_ci				${OUTPUT}
29e5c31af7Sopenharmony_ci			}
30e5c31af7Sopenharmony_ci		""
31e5c31af7Sopenharmony_ci	end
32e5c31af7Sopenharmony_ci
33e5c31af7Sopenharmony_ci	case null_directive
34e5c31af7Sopenharmony_ci		version 300 es
35e5c31af7Sopenharmony_ci		values { output float out0 = 0.0; }
36e5c31af7Sopenharmony_ci		both ""
37e5c31af7Sopenharmony_ci			#version 300 es
38e5c31af7Sopenharmony_ci			precision mediump float;
39e5c31af7Sopenharmony_ci			${DECLARATIONS}
40e5c31af7Sopenharmony_ci
41e5c31af7Sopenharmony_ci			#
42e5c31af7Sopenharmony_ci		# // comment
43e5c31af7Sopenharmony_ci	/*sfd*/		# /* */
44e5c31af7Sopenharmony_ci
45e5c31af7Sopenharmony_ci			void main()
46e5c31af7Sopenharmony_ci			{
47e5c31af7Sopenharmony_ci				out0 = 0.0;
48e5c31af7Sopenharmony_ci				${OUTPUT}
49e5c31af7Sopenharmony_ci			}
50e5c31af7Sopenharmony_ci		""
51e5c31af7Sopenharmony_ci	end
52e5c31af7Sopenharmony_ci
53e5c31af7Sopenharmony_ci	case invalid_directive
54e5c31af7Sopenharmony_ci		version 300 es
55e5c31af7Sopenharmony_ci		expect compile_fail
56e5c31af7Sopenharmony_ci		both ""
57e5c31af7Sopenharmony_ci			#version 300 es
58e5c31af7Sopenharmony_ci			#defin AAA
59e5c31af7Sopenharmony_ci			${DECLARATIONS}
60e5c31af7Sopenharmony_ci
61e5c31af7Sopenharmony_ci			void main()
62e5c31af7Sopenharmony_ci			{
63e5c31af7Sopenharmony_ci				${OUTPUT}
64e5c31af7Sopenharmony_ci			}
65e5c31af7Sopenharmony_ci		""
66e5c31af7Sopenharmony_ci	end
67e5c31af7Sopenharmony_ci
68e5c31af7Sopenharmony_ci	case missing_identifier
69e5c31af7Sopenharmony_ci		version 300 es
70e5c31af7Sopenharmony_ci		expect compile_fail
71e5c31af7Sopenharmony_ci		both ""
72e5c31af7Sopenharmony_ci			#version 300 es
73e5c31af7Sopenharmony_ci			#define
74e5c31af7Sopenharmony_ci			${DECLARATIONS}
75e5c31af7Sopenharmony_ci
76e5c31af7Sopenharmony_ci			void main()
77e5c31af7Sopenharmony_ci			{
78e5c31af7Sopenharmony_ci				${OUTPUT}
79e5c31af7Sopenharmony_ci			}
80e5c31af7Sopenharmony_ci		""
81e5c31af7Sopenharmony_ci	end
82e5c31af7Sopenharmony_ci
83e5c31af7Sopenharmony_ci	case empty_object
84e5c31af7Sopenharmony_ci		version 300 es
85e5c31af7Sopenharmony_ci		values { output float out0 = -1.0; }
86e5c31af7Sopenharmony_ci		both ""
87e5c31af7Sopenharmony_ci			#version 300 es
88e5c31af7Sopenharmony_ci			precision mediump float;
89e5c31af7Sopenharmony_ci			${DECLARATIONS}
90e5c31af7Sopenharmony_ci
91e5c31af7Sopenharmony_ci			# define VALUE
92e5c31af7Sopenharmony_ci
93e5c31af7Sopenharmony_ci			void main()
94e5c31af7Sopenharmony_ci			{
95e5c31af7Sopenharmony_ci				out0 = VALUE - 1.0;
96e5c31af7Sopenharmony_ci				${OUTPUT}
97e5c31af7Sopenharmony_ci			}
98e5c31af7Sopenharmony_ci		""
99e5c31af7Sopenharmony_ci	end
100e5c31af7Sopenharmony_ci
101e5c31af7Sopenharmony_ci	case empty_function
102e5c31af7Sopenharmony_ci		version 300 es
103e5c31af7Sopenharmony_ci		values { output float out0 = -1.0; }
104e5c31af7Sopenharmony_ci		both ""
105e5c31af7Sopenharmony_ci			#version 300 es
106e5c31af7Sopenharmony_ci			precision mediump float;
107e5c31af7Sopenharmony_ci			${DECLARATIONS}
108e5c31af7Sopenharmony_ci
109e5c31af7Sopenharmony_ci			# define VALUE(a)
110e5c31af7Sopenharmony_ci
111e5c31af7Sopenharmony_ci			void main()
112e5c31af7Sopenharmony_ci			{
113e5c31af7Sopenharmony_ci				out0 = VALUE(2.0) - 1.0;
114e5c31af7Sopenharmony_ci				${OUTPUT}
115e5c31af7Sopenharmony_ci			}
116e5c31af7Sopenharmony_ci		""
117e5c31af7Sopenharmony_ci	end
118e5c31af7Sopenharmony_ci
119e5c31af7Sopenharmony_ci	case empty_directive
120e5c31af7Sopenharmony_ci		version 300 es
121e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
122e5c31af7Sopenharmony_ci		both ""
123e5c31af7Sopenharmony_ci			#version 300 es
124e5c31af7Sopenharmony_ci			precision mediump float;
125e5c31af7Sopenharmony_ci			${DECLARATIONS}
126e5c31af7Sopenharmony_ci
127e5c31af7Sopenharmony_ci			#
128e5c31af7Sopenharmony_ci
129e5c31af7Sopenharmony_ci			void main()
130e5c31af7Sopenharmony_ci			{
131e5c31af7Sopenharmony_ci				out0 = 1.0;
132e5c31af7Sopenharmony_ci				${OUTPUT}
133e5c31af7Sopenharmony_ci			}
134e5c31af7Sopenharmony_ci		""
135e5c31af7Sopenharmony_ci	end
136e5c31af7Sopenharmony_ci
137e5c31af7Sopenharmony_ciend # basic
138e5c31af7Sopenharmony_ci
139e5c31af7Sopenharmony_cigroup definitions "Symbol Definition Tests"
140e5c31af7Sopenharmony_ci
141e5c31af7Sopenharmony_ci	case define_value_and_function
142e5c31af7Sopenharmony_ci		version 300 es
143e5c31af7Sopenharmony_ci		values { output float out0 = 6.0; }
144e5c31af7Sopenharmony_ci
145e5c31af7Sopenharmony_ci		both ""
146e5c31af7Sopenharmony_ci			#version 300 es
147e5c31af7Sopenharmony_ci			precision mediump float;
148e5c31af7Sopenharmony_ci			${DECLARATIONS:single-line}
149e5c31af7Sopenharmony_ci			#	define		VALUE			(1.5 + 2.5)
150e5c31af7Sopenharmony_ci			#	define		FUNCTION(__LINE__, b)	__LINE__+b
151e5c31af7Sopenharmony_ci
152e5c31af7Sopenharmony_ci			void main()
153e5c31af7Sopenharmony_ci			{
154e5c31af7Sopenharmony_ci				out0 = FUNCTION(VALUE, ((0.2) + 1.8) );
155e5c31af7Sopenharmony_ci				${OUTPUT}
156e5c31af7Sopenharmony_ci			}
157e5c31af7Sopenharmony_ci		""
158e5c31af7Sopenharmony_ci	end
159e5c31af7Sopenharmony_ci
160e5c31af7Sopenharmony_ci	case undefine_object_invalid_syntax
161e5c31af7Sopenharmony_ci		version 300 es
162e5c31af7Sopenharmony_ci		expect compile_fail
163e5c31af7Sopenharmony_ci		both ""
164e5c31af7Sopenharmony_ci			#version 300 es
165e5c31af7Sopenharmony_ci			precision mediump float;
166e5c31af7Sopenharmony_ci			#define		VAL			2.0
167e5c31af7Sopenharmony_ci			#undef		VAL	sdflkjfds
168e5c31af7Sopenharmony_ci			#define		VAL			1.0
169e5c31af7Sopenharmony_ci			${DECLARATIONS}
170e5c31af7Sopenharmony_ci
171e5c31af7Sopenharmony_ci			void main()
172e5c31af7Sopenharmony_ci			{
173e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VAL);
174e5c31af7Sopenharmony_ci			}
175e5c31af7Sopenharmony_ci		""
176e5c31af7Sopenharmony_ci	end
177e5c31af7Sopenharmony_ci
178e5c31af7Sopenharmony_ci	case undefine_invalid_object_1
179e5c31af7Sopenharmony_ci		version 300 es
180e5c31af7Sopenharmony_ci		expect compile_fail
181e5c31af7Sopenharmony_ci		both ""
182e5c31af7Sopenharmony_ci			#version 300 es
183e5c31af7Sopenharmony_ci			precision mediump float;
184e5c31af7Sopenharmony_ci			#undef __LINE__
185e5c31af7Sopenharmony_ci			${DECLARATIONS}
186e5c31af7Sopenharmony_ci
187e5c31af7Sopenharmony_ci			void main()
188e5c31af7Sopenharmony_ci			{
189e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(__LINE__);
190e5c31af7Sopenharmony_ci			}
191e5c31af7Sopenharmony_ci		""
192e5c31af7Sopenharmony_ci	end
193e5c31af7Sopenharmony_ci
194e5c31af7Sopenharmony_ci	case undefine_invalid_object_2
195e5c31af7Sopenharmony_ci		version 300 es
196e5c31af7Sopenharmony_ci		expect compile_fail
197e5c31af7Sopenharmony_ci		both ""
198e5c31af7Sopenharmony_ci			#version 300 es
199e5c31af7Sopenharmony_ci			precision mediump float;
200e5c31af7Sopenharmony_ci			#undef __FILE__
201e5c31af7Sopenharmony_ci			${DECLARATIONS}
202e5c31af7Sopenharmony_ci
203e5c31af7Sopenharmony_ci			void main()
204e5c31af7Sopenharmony_ci			{
205e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(__FILE__);
206e5c31af7Sopenharmony_ci			}
207e5c31af7Sopenharmony_ci		""
208e5c31af7Sopenharmony_ci	end
209e5c31af7Sopenharmony_ci
210e5c31af7Sopenharmony_ci	case undefine_invalid_object_3
211e5c31af7Sopenharmony_ci		version 300 es
212e5c31af7Sopenharmony_ci		expect compile_fail
213e5c31af7Sopenharmony_ci		both ""
214e5c31af7Sopenharmony_ci			#version 300 es
215e5c31af7Sopenharmony_ci			precision mediump float;
216e5c31af7Sopenharmony_ci			#undef __VERSION__
217e5c31af7Sopenharmony_ci			${DECLARATIONS}
218e5c31af7Sopenharmony_ci
219e5c31af7Sopenharmony_ci			void main()
220e5c31af7Sopenharmony_ci			{
221e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(__VERSION__);
222e5c31af7Sopenharmony_ci			}
223e5c31af7Sopenharmony_ci		""
224e5c31af7Sopenharmony_ci	end
225e5c31af7Sopenharmony_ci
226e5c31af7Sopenharmony_ci	case undefine_invalid_object_4
227e5c31af7Sopenharmony_ci		version 300 es
228e5c31af7Sopenharmony_ci		expect compile_fail
229e5c31af7Sopenharmony_ci		both ""
230e5c31af7Sopenharmony_ci			#version 300 es
231e5c31af7Sopenharmony_ci			precision mediump float;
232e5c31af7Sopenharmony_ci			#undef GL_ES
233e5c31af7Sopenharmony_ci			${DECLARATIONS}
234e5c31af7Sopenharmony_ci
235e5c31af7Sopenharmony_ci			void main()
236e5c31af7Sopenharmony_ci			{
237e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(GL_ES);
238e5c31af7Sopenharmony_ci			}
239e5c31af7Sopenharmony_ci		""
240e5c31af7Sopenharmony_ci	end
241e5c31af7Sopenharmony_ci
242e5c31af7Sopenharmony_ci	case undefine_function
243e5c31af7Sopenharmony_ci		version 300 es
244e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
245e5c31af7Sopenharmony_ci		both ""
246e5c31af7Sopenharmony_ci			#version 300 es
247e5c31af7Sopenharmony_ci			precision mediump float;
248e5c31af7Sopenharmony_ci			#define		FUNCTION(a,b) a+b
249e5c31af7Sopenharmony_ci			#undef		FUNCTION
250e5c31af7Sopenharmony_ci			#define		FUNCTION(a,b) a-b
251e5c31af7Sopenharmony_ci			${DECLARATIONS}
252e5c31af7Sopenharmony_ci
253e5c31af7Sopenharmony_ci			void main()
254e5c31af7Sopenharmony_ci			{
255e5c31af7Sopenharmony_ci				out0 = FUNCTION(3.0, 2.0);
256e5c31af7Sopenharmony_ci				${OUTPUT}
257e5c31af7Sopenharmony_ci			}
258e5c31af7Sopenharmony_ci		""
259e5c31af7Sopenharmony_ci	end
260e5c31af7Sopenharmony_ci
261e5c31af7Sopenharmony_ciend # definitions
262e5c31af7Sopenharmony_ci
263e5c31af7Sopenharmony_cigroup invalid_definitions "Invalid Definition Tests"
264e5c31af7Sopenharmony_ci
265e5c31af7Sopenharmony_ci	case define_non_identifier
266e5c31af7Sopenharmony_ci		version 300 es
267e5c31af7Sopenharmony_ci		expect compile_fail
268e5c31af7Sopenharmony_ci		both ""
269e5c31af7Sopenharmony_ci			#version 300 es
270e5c31af7Sopenharmony_ci			precision mediump float;
271e5c31af7Sopenharmony_ci			#define 123 321
272e5c31af7Sopenharmony_ci			${DECLARATIONS}
273e5c31af7Sopenharmony_ci
274e5c31af7Sopenharmony_ci			void main()
275e5c31af7Sopenharmony_ci			{
276e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
277e5c31af7Sopenharmony_ci			}
278e5c31af7Sopenharmony_ci		""
279e5c31af7Sopenharmony_ci	end
280e5c31af7Sopenharmony_ci
281e5c31af7Sopenharmony_ci	case undef_non_identifier_1
282e5c31af7Sopenharmony_ci		version 300 es
283e5c31af7Sopenharmony_ci		expect compile_fail
284e5c31af7Sopenharmony_ci		both ""
285e5c31af7Sopenharmony_ci			#version 300 es
286e5c31af7Sopenharmony_ci			precision mediump float;
287e5c31af7Sopenharmony_ci			#undef 123
288e5c31af7Sopenharmony_ci			${DECLARATIONS}
289e5c31af7Sopenharmony_ci
290e5c31af7Sopenharmony_ci			void main()
291e5c31af7Sopenharmony_ci			{
292e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
293e5c31af7Sopenharmony_ci			}
294e5c31af7Sopenharmony_ci		""
295e5c31af7Sopenharmony_ci	end
296e5c31af7Sopenharmony_ci
297e5c31af7Sopenharmony_ci	case undef_non_identifier_2
298e5c31af7Sopenharmony_ci		version 300 es
299e5c31af7Sopenharmony_ci		expect compile_fail
300e5c31af7Sopenharmony_ci		both ""
301e5c31af7Sopenharmony_ci			#version 300 es
302e5c31af7Sopenharmony_ci			precision mediump float;
303e5c31af7Sopenharmony_ci			#undef foo.bar
304e5c31af7Sopenharmony_ci			${DECLARATIONS}
305e5c31af7Sopenharmony_ci
306e5c31af7Sopenharmony_ci			void main()
307e5c31af7Sopenharmony_ci			{
308e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
309e5c31af7Sopenharmony_ci			}
310e5c31af7Sopenharmony_ci		""
311e5c31af7Sopenharmony_ci	end
312e5c31af7Sopenharmony_ci
313e5c31af7Sopenharmony_ci
314e5c31af7Sopenharmony_ciend # invalid_definitions
315e5c31af7Sopenharmony_ci
316e5c31af7Sopenharmony_cigroup object_redefinitions "Object Redefinition Tests"
317e5c31af7Sopenharmony_ci
318e5c31af7Sopenharmony_ci	case invalid_object_ident
319e5c31af7Sopenharmony_ci		version 300 es
320e5c31af7Sopenharmony_ci		expect compile_fail
321e5c31af7Sopenharmony_ci		both ""
322e5c31af7Sopenharmony_ci			#version 300 es
323e5c31af7Sopenharmony_ci			precision mediump float;
324e5c31af7Sopenharmony_ci			${DECLARATIONS}
325e5c31af7Sopenharmony_ci			# define AAA			2.0
326e5c31af7Sopenharmony_ci			# define AAAA			2.1
327e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0)
328e5c31af7Sopenharmony_ci			# define VALUE (AAAA - 1.0)
329e5c31af7Sopenharmony_ci
330e5c31af7Sopenharmony_ci			void main()
331e5c31af7Sopenharmony_ci			{
332e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
333e5c31af7Sopenharmony_ci			}
334e5c31af7Sopenharmony_ci		""
335e5c31af7Sopenharmony_ci	end
336e5c31af7Sopenharmony_ci
337e5c31af7Sopenharmony_ci	case invalid_object_whitespace
338e5c31af7Sopenharmony_ci		version 300 es
339e5c31af7Sopenharmony_ci		expect compile_fail
340e5c31af7Sopenharmony_ci		both ""
341e5c31af7Sopenharmony_ci			#version 300 es
342e5c31af7Sopenharmony_ci			precision mediump float;
343e5c31af7Sopenharmony_ci			${DECLARATIONS}
344e5c31af7Sopenharmony_ci			# define AAA			2.0
345e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0)
346e5c31af7Sopenharmony_ci			# define VALUE (AAA- 1.0)
347e5c31af7Sopenharmony_ci
348e5c31af7Sopenharmony_ci			void main()
349e5c31af7Sopenharmony_ci			{
350e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
351e5c31af7Sopenharmony_ci			}
352e5c31af7Sopenharmony_ci		""
353e5c31af7Sopenharmony_ci	end
354e5c31af7Sopenharmony_ci
355e5c31af7Sopenharmony_ci	case invalid_object_op
356e5c31af7Sopenharmony_ci		version 300 es
357e5c31af7Sopenharmony_ci		expect compile_fail
358e5c31af7Sopenharmony_ci		both ""
359e5c31af7Sopenharmony_ci			#version 300 es
360e5c31af7Sopenharmony_ci			precision mediump float;
361e5c31af7Sopenharmony_ci			${DECLARATIONS}
362e5c31af7Sopenharmony_ci			# define AAA			2.0
363e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0)
364e5c31af7Sopenharmony_ci			# define VALUE (AAA + 1.0)
365e5c31af7Sopenharmony_ci
366e5c31af7Sopenharmony_ci			void main()
367e5c31af7Sopenharmony_ci			{
368e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
369e5c31af7Sopenharmony_ci			}
370e5c31af7Sopenharmony_ci		""
371e5c31af7Sopenharmony_ci	end
372e5c31af7Sopenharmony_ci
373e5c31af7Sopenharmony_ci	case invalid_object_floatval_1
374e5c31af7Sopenharmony_ci		version 300 es
375e5c31af7Sopenharmony_ci		expect compile_fail
376e5c31af7Sopenharmony_ci		both ""
377e5c31af7Sopenharmony_ci			#version 300 es
378e5c31af7Sopenharmony_ci			precision mediump float;
379e5c31af7Sopenharmony_ci			${DECLARATIONS}
380e5c31af7Sopenharmony_ci			# define AAA			2.0
381e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0)
382e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.1)
383e5c31af7Sopenharmony_ci
384e5c31af7Sopenharmony_ci			void main()
385e5c31af7Sopenharmony_ci			{
386e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
387e5c31af7Sopenharmony_ci			}
388e5c31af7Sopenharmony_ci		""
389e5c31af7Sopenharmony_ci	end
390e5c31af7Sopenharmony_ci
391e5c31af7Sopenharmony_ci	case invalid_object_floatval_2
392e5c31af7Sopenharmony_ci		version 300 es
393e5c31af7Sopenharmony_ci		expect compile_fail
394e5c31af7Sopenharmony_ci		both ""
395e5c31af7Sopenharmony_ci			#version 300 es
396e5c31af7Sopenharmony_ci			precision mediump float;
397e5c31af7Sopenharmony_ci			${DECLARATIONS}
398e5c31af7Sopenharmony_ci			# define AAA			2.0
399e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0)
400e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1.0e-1)
401e5c31af7Sopenharmony_ci
402e5c31af7Sopenharmony_ci			void main()
403e5c31af7Sopenharmony_ci			{
404e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
405e5c31af7Sopenharmony_ci			}
406e5c31af7Sopenharmony_ci		""
407e5c31af7Sopenharmony_ci	end
408e5c31af7Sopenharmony_ci
409e5c31af7Sopenharmony_ci	case invalid_object_intval_1
410e5c31af7Sopenharmony_ci		version 300 es
411e5c31af7Sopenharmony_ci		expect compile_fail
412e5c31af7Sopenharmony_ci		both ""
413e5c31af7Sopenharmony_ci			#version 300 es
414e5c31af7Sopenharmony_ci			precision mediump float;
415e5c31af7Sopenharmony_ci			${DECLARATIONS}
416e5c31af7Sopenharmony_ci			# define AAA			2
417e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1)
418e5c31af7Sopenharmony_ci			# define VALUE (AAA - 2)
419e5c31af7Sopenharmony_ci
420e5c31af7Sopenharmony_ci			void main()
421e5c31af7Sopenharmony_ci			{
422e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
423e5c31af7Sopenharmony_ci			}
424e5c31af7Sopenharmony_ci		""
425e5c31af7Sopenharmony_ci	end
426e5c31af7Sopenharmony_ci
427e5c31af7Sopenharmony_ci	case invalid_object_intval_2
428e5c31af7Sopenharmony_ci		version 300 es
429e5c31af7Sopenharmony_ci		expect compile_fail
430e5c31af7Sopenharmony_ci		both ""
431e5c31af7Sopenharmony_ci			#version 300 es
432e5c31af7Sopenharmony_ci			precision mediump float;
433e5c31af7Sopenharmony_ci			${DECLARATIONS}
434e5c31af7Sopenharmony_ci			# define AAA			2
435e5c31af7Sopenharmony_ci			# define VALUE (AAA - 1)
436e5c31af7Sopenharmony_ci			# define VALUE (AAA - 0x1)
437e5c31af7Sopenharmony_ci
438e5c31af7Sopenharmony_ci			void main()
439e5c31af7Sopenharmony_ci			{
440e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(VALUE);
441e5c31af7Sopenharmony_ci			}
442e5c31af7Sopenharmony_ci		""
443e5c31af7Sopenharmony_ci	end
444e5c31af7Sopenharmony_ci
445e5c31af7Sopenharmony_ci	case redefine_object_1
446e5c31af7Sopenharmony_ci		version 300 es
447e5c31af7Sopenharmony_ci		values { output float out0 = 6.0; }
448e5c31af7Sopenharmony_ci
449e5c31af7Sopenharmony_ci		both ""
450e5c31af7Sopenharmony_ci			#version 300 es
451e5c31af7Sopenharmony_ci			precision mediump float;
452e5c31af7Sopenharmony_ci			${DECLARATIONS}
453e5c31af7Sopenharmony_ci			#	define  VAL1 1.0
454e5c31af7Sopenharmony_ci			#define		VAL2 2.0
455e5c31af7Sopenharmony_ci
456e5c31af7Sopenharmony_ci			#define RES2 (RES1 * VAL2)
457e5c31af7Sopenharmony_ci			#define RES1	(VAL2 / VAL1)
458e5c31af7Sopenharmony_ci			#define RES2	(RES1 * VAL2)
459e5c31af7Sopenharmony_ci			#define VALUE	(RES2 + RES1)
460e5c31af7Sopenharmony_ci
461e5c31af7Sopenharmony_ci			void main()
462e5c31af7Sopenharmony_ci			{
463e5c31af7Sopenharmony_ci				out0 = VALUE;
464e5c31af7Sopenharmony_ci				${OUTPUT}
465e5c31af7Sopenharmony_ci			}
466e5c31af7Sopenharmony_ci		""
467e5c31af7Sopenharmony_ci	end
468e5c31af7Sopenharmony_ci
469e5c31af7Sopenharmony_ci	case redefine_object_ifdef
470e5c31af7Sopenharmony_ci		version 300 es
471e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
472e5c31af7Sopenharmony_ci
473e5c31af7Sopenharmony_ci		both ""
474e5c31af7Sopenharmony_ci			#version 300 es
475e5c31af7Sopenharmony_ci			precision mediump float;
476e5c31af7Sopenharmony_ci			${DECLARATIONS}
477e5c31af7Sopenharmony_ci			#define ADEFINE 1
478e5c31af7Sopenharmony_ci			#define ADEFINE 1
479e5c31af7Sopenharmony_ci
480e5c31af7Sopenharmony_ci			#ifdef ADEFINE
481e5c31af7Sopenharmony_ci			#define VALUE 1.0
482e5c31af7Sopenharmony_ci			#else
483e5c31af7Sopenharmony_ci			#define VALUE 0.0
484e5c31af7Sopenharmony_ci			#endif
485e5c31af7Sopenharmony_ci
486e5c31af7Sopenharmony_ci			void main()
487e5c31af7Sopenharmony_ci			{
488e5c31af7Sopenharmony_ci				out0 = VALUE;
489e5c31af7Sopenharmony_ci				${OUTPUT}
490e5c31af7Sopenharmony_ci			}
491e5c31af7Sopenharmony_ci		""
492e5c31af7Sopenharmony_ci	end
493e5c31af7Sopenharmony_ci
494e5c31af7Sopenharmony_ci	case redefine_object_undef_ifdef
495e5c31af7Sopenharmony_ci		version 300 es
496e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
497e5c31af7Sopenharmony_ci
498e5c31af7Sopenharmony_ci		both ""
499e5c31af7Sopenharmony_ci			#version 300 es
500e5c31af7Sopenharmony_ci			precision mediump float;
501e5c31af7Sopenharmony_ci			${DECLARATIONS}
502e5c31af7Sopenharmony_ci			#define ADEFINE 1
503e5c31af7Sopenharmony_ci			#define ADEFINE 1
504e5c31af7Sopenharmony_ci			#undef ADEFINE
505e5c31af7Sopenharmony_ci
506e5c31af7Sopenharmony_ci			#ifdef ADEFINE
507e5c31af7Sopenharmony_ci			#define VALUE 0.0
508e5c31af7Sopenharmony_ci			#else
509e5c31af7Sopenharmony_ci			#define VALUE 1.0
510e5c31af7Sopenharmony_ci			#endif
511e5c31af7Sopenharmony_ci
512e5c31af7Sopenharmony_ci			void main()
513e5c31af7Sopenharmony_ci			{
514e5c31af7Sopenharmony_ci				out0 = VALUE;
515e5c31af7Sopenharmony_ci				${OUTPUT}
516e5c31af7Sopenharmony_ci			}
517e5c31af7Sopenharmony_ci		""
518e5c31af7Sopenharmony_ci	end
519e5c31af7Sopenharmony_ci
520e5c31af7Sopenharmony_ci	case redefine_object_ifndef
521e5c31af7Sopenharmony_ci		version 300 es
522e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
523e5c31af7Sopenharmony_ci
524e5c31af7Sopenharmony_ci		both ""
525e5c31af7Sopenharmony_ci			#version 300 es
526e5c31af7Sopenharmony_ci			precision mediump float;
527e5c31af7Sopenharmony_ci			${DECLARATIONS}
528e5c31af7Sopenharmony_ci			#define ADEFINE 1
529e5c31af7Sopenharmony_ci			#define ADEFINE 1
530e5c31af7Sopenharmony_ci
531e5c31af7Sopenharmony_ci			#ifndef ADEFINE
532e5c31af7Sopenharmony_ci			#define VALUE 0.0
533e5c31af7Sopenharmony_ci			#else
534e5c31af7Sopenharmony_ci			#define VALUE 1.0
535e5c31af7Sopenharmony_ci			#endif
536e5c31af7Sopenharmony_ci
537e5c31af7Sopenharmony_ci			void main()
538e5c31af7Sopenharmony_ci			{
539e5c31af7Sopenharmony_ci				out0 = VALUE;
540e5c31af7Sopenharmony_ci				${OUTPUT}
541e5c31af7Sopenharmony_ci			}
542e5c31af7Sopenharmony_ci		""
543e5c31af7Sopenharmony_ci	end
544e5c31af7Sopenharmony_ci
545e5c31af7Sopenharmony_ci	case redefine_object_defined_1
546e5c31af7Sopenharmony_ci		version 300 es
547e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
548e5c31af7Sopenharmony_ci
549e5c31af7Sopenharmony_ci		both ""
550e5c31af7Sopenharmony_ci			#version 300 es
551e5c31af7Sopenharmony_ci			precision mediump float;
552e5c31af7Sopenharmony_ci			${DECLARATIONS}
553e5c31af7Sopenharmony_ci			#define ADEFINE 1
554e5c31af7Sopenharmony_ci			#define ADEFINE 1
555e5c31af7Sopenharmony_ci
556e5c31af7Sopenharmony_ci			#if defined(ADEFINE)
557e5c31af7Sopenharmony_ci			#define VALUE 1.0
558e5c31af7Sopenharmony_ci			#else
559e5c31af7Sopenharmony_ci			#define VALUE 0.0
560e5c31af7Sopenharmony_ci			#endif
561e5c31af7Sopenharmony_ci
562e5c31af7Sopenharmony_ci			void main()
563e5c31af7Sopenharmony_ci			{
564e5c31af7Sopenharmony_ci				out0 = VALUE;
565e5c31af7Sopenharmony_ci				${OUTPUT}
566e5c31af7Sopenharmony_ci			}
567e5c31af7Sopenharmony_ci		""
568e5c31af7Sopenharmony_ci	end
569e5c31af7Sopenharmony_ci
570e5c31af7Sopenharmony_ci	case redefine_object_defined_2
571e5c31af7Sopenharmony_ci		version 300 es
572e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
573e5c31af7Sopenharmony_ci
574e5c31af7Sopenharmony_ci		both ""
575e5c31af7Sopenharmony_ci			#version 300 es
576e5c31af7Sopenharmony_ci			precision mediump float;
577e5c31af7Sopenharmony_ci			${DECLARATIONS}
578e5c31af7Sopenharmony_ci			#define ADEFINE 1
579e5c31af7Sopenharmony_ci			#define ADEFINE 1
580e5c31af7Sopenharmony_ci
581e5c31af7Sopenharmony_ci			#if defined ADEFINE
582e5c31af7Sopenharmony_ci			#define VALUE 1.0
583e5c31af7Sopenharmony_ci			#else
584e5c31af7Sopenharmony_ci			#define VALUE 0.0
585e5c31af7Sopenharmony_ci			#endif
586e5c31af7Sopenharmony_ci
587e5c31af7Sopenharmony_ci			void main()
588e5c31af7Sopenharmony_ci			{
589e5c31af7Sopenharmony_ci				out0 = VALUE;
590e5c31af7Sopenharmony_ci				${OUTPUT}
591e5c31af7Sopenharmony_ci			}
592e5c31af7Sopenharmony_ci		""
593e5c31af7Sopenharmony_ci	end
594e5c31af7Sopenharmony_ci
595e5c31af7Sopenharmony_ci	case redefine_object_comment
596e5c31af7Sopenharmony_ci		version 300 es
597e5c31af7Sopenharmony_ci		values { output float out0 = 6.0; }
598e5c31af7Sopenharmony_ci
599e5c31af7Sopenharmony_ci		both ""
600e5c31af7Sopenharmony_ci			#version 300 es
601e5c31af7Sopenharmony_ci			precision mediump float;
602e5c31af7Sopenharmony_ci			${DECLARATIONS}
603e5c31af7Sopenharmony_ci			#	define  VAL1 1.0
604e5c31af7Sopenharmony_ci			#define		VAL2 2.0
605e5c31af7Sopenharmony_ci
606e5c31af7Sopenharmony_ci			#define RES2 /* fdsjklfdsjkl dsfjkhfdsjkh fdsjklhfdsjkh */ (RES1 * VAL2)
607e5c31af7Sopenharmony_ci			#define RES1	(VAL2 / VAL1)
608e5c31af7Sopenharmony_ci			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
609e5c31af7Sopenharmony_ci			#define VALUE	(RES2 + RES1)
610e5c31af7Sopenharmony_ci
611e5c31af7Sopenharmony_ci			void main()
612e5c31af7Sopenharmony_ci			{
613e5c31af7Sopenharmony_ci				out0 = VALUE;
614e5c31af7Sopenharmony_ci				${OUTPUT}
615e5c31af7Sopenharmony_ci			}
616e5c31af7Sopenharmony_ci		""
617e5c31af7Sopenharmony_ci	end
618e5c31af7Sopenharmony_ci
619e5c31af7Sopenharmony_ci	case redefine_object_multiline_comment
620e5c31af7Sopenharmony_ci		version 300 es
621e5c31af7Sopenharmony_ci		values { output float out0 = 6.0; }
622e5c31af7Sopenharmony_ci
623e5c31af7Sopenharmony_ci		both ""
624e5c31af7Sopenharmony_ci			#version 300 es
625e5c31af7Sopenharmony_ci			precision mediump float;
626e5c31af7Sopenharmony_ci			${DECLARATIONS}
627e5c31af7Sopenharmony_ci			#	define  VAL1 1.0
628e5c31af7Sopenharmony_ci			#define		VAL2 2.0
629e5c31af7Sopenharmony_ci
630e5c31af7Sopenharmony_ci			#define RES2 /* fdsjklfdsjkl
631e5c31af7Sopenharmony_ci							dsfjkhfdsjkh
632e5c31af7Sopenharmony_ci							fdsjklhfdsjkh */ (RES1 * VAL2)
633e5c31af7Sopenharmony_ci			#define RES1	(VAL2 / VAL1)
634e5c31af7Sopenharmony_ci			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
635e5c31af7Sopenharmony_ci			#define VALUE	(RES2 + RES1)
636e5c31af7Sopenharmony_ci
637e5c31af7Sopenharmony_ci			void main()
638e5c31af7Sopenharmony_ci			{
639e5c31af7Sopenharmony_ci				out0 = VALUE;
640e5c31af7Sopenharmony_ci				${OUTPUT}
641e5c31af7Sopenharmony_ci			}
642e5c31af7Sopenharmony_ci		""
643e5c31af7Sopenharmony_ci	end
644e5c31af7Sopenharmony_ci
645e5c31af7Sopenharmony_ciend # object_redefinitions
646e5c31af7Sopenharmony_ci
647e5c31af7Sopenharmony_cigroup invalid_redefinitions "Invalid Redefinitions Tests"
648e5c31af7Sopenharmony_ci
649e5c31af7Sopenharmony_ci	case invalid_identifier_1
650e5c31af7Sopenharmony_ci		version 300 es
651e5c31af7Sopenharmony_ci		values { output int out0 = 1; }
652e5c31af7Sopenharmony_ci		both ""
653e5c31af7Sopenharmony_ci			#version 300 es
654e5c31af7Sopenharmony_ci			precision mediump float;
655e5c31af7Sopenharmony_ci			${DECLARATIONS}
656e5c31af7Sopenharmony_ci			# define __VALUE__	1
657e5c31af7Sopenharmony_ci
658e5c31af7Sopenharmony_ci			void main()
659e5c31af7Sopenharmony_ci			{
660e5c31af7Sopenharmony_ci				out0 = __VALUE__;
661e5c31af7Sopenharmony_ci				${OUTPUT}
662e5c31af7Sopenharmony_ci			}
663e5c31af7Sopenharmony_ci		""
664e5c31af7Sopenharmony_ci	end
665e5c31af7Sopenharmony_ci
666e5c31af7Sopenharmony_ci	case invalid_identifier_2
667e5c31af7Sopenharmony_ci		version 300 es
668e5c31af7Sopenharmony_ci		expect compile_fail
669e5c31af7Sopenharmony_ci		both ""
670e5c31af7Sopenharmony_ci			#version 300 es
671e5c31af7Sopenharmony_ci			precision mediump float;
672e5c31af7Sopenharmony_ci			${DECLARATIONS}
673e5c31af7Sopenharmony_ci			# define GL_VALUE	1.0
674e5c31af7Sopenharmony_ci
675e5c31af7Sopenharmony_ci			void main()
676e5c31af7Sopenharmony_ci			{
677e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(GL_VALUE);
678e5c31af7Sopenharmony_ci			}
679e5c31af7Sopenharmony_ci		""
680e5c31af7Sopenharmony_ci	end
681e5c31af7Sopenharmony_ci
682e5c31af7Sopenharmony_ciend # invalid_redefinitions
683e5c31af7Sopenharmony_ci
684e5c31af7Sopenharmony_cigroup comments "Comment Tests"
685e5c31af7Sopenharmony_ci
686e5c31af7Sopenharmony_ci	case multiline_comment_define
687e5c31af7Sopenharmony_ci		version 300 es
688e5c31af7Sopenharmony_ci		values { output float out0 = 4.2; }
689e5c31af7Sopenharmony_ci		both ""
690e5c31af7Sopenharmony_ci			#version 300 es
691e5c31af7Sopenharmony_ci			precision mediump float;
692e5c31af7Sopenharmony_ci			${DECLARATIONS}
693e5c31af7Sopenharmony_ci			#define VALUE /* current
694e5c31af7Sopenharmony_ci						value */ 4.2
695e5c31af7Sopenharmony_ci
696e5c31af7Sopenharmony_ci			void main()
697e5c31af7Sopenharmony_ci			{
698e5c31af7Sopenharmony_ci				out0 = VALUE;
699e5c31af7Sopenharmony_ci				${OUTPUT}
700e5c31af7Sopenharmony_ci			}
701e5c31af7Sopenharmony_ci		""
702e5c31af7Sopenharmony_ci	end
703e5c31af7Sopenharmony_ci
704e5c31af7Sopenharmony_ci	case nested_comment
705e5c31af7Sopenharmony_ci		version 300 es
706e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
707e5c31af7Sopenharmony_ci		both ""
708e5c31af7Sopenharmony_ci			#version 300 es
709e5c31af7Sopenharmony_ci			precision mediump float;
710e5c31af7Sopenharmony_ci			${DECLARATIONS}
711e5c31af7Sopenharmony_ci			void main()
712e5c31af7Sopenharmony_ci			{
713e5c31af7Sopenharmony_ci				out0 = 0.0;
714e5c31af7Sopenharmony_ci				/* /* */
715e5c31af7Sopenharmony_ci				out0 = 1.0;
716e5c31af7Sopenharmony_ci				// */
717e5c31af7Sopenharmony_ci				${OUTPUT}
718e5c31af7Sopenharmony_ci			}
719e5c31af7Sopenharmony_ci		""
720e5c31af7Sopenharmony_ci	end
721e5c31af7Sopenharmony_ci
722e5c31af7Sopenharmony_ci	case invalid_comment
723e5c31af7Sopenharmony_ci		version 300 es
724e5c31af7Sopenharmony_ci		expect compile_fail
725e5c31af7Sopenharmony_ci		both ""
726e5c31af7Sopenharmony_ci			#version 300 es
727e5c31af7Sopenharmony_ci			precision mediump float;
728e5c31af7Sopenharmony_ci			${DECLARATIONS}
729e5c31af7Sopenharmony_ci			void main()
730e5c31af7Sopenharmony_ci			{
731e5c31af7Sopenharmony_ci				/* /* */ */
732e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = 1.0;
733e5c31af7Sopenharmony_ci			}
734e5c31af7Sopenharmony_ci		""
735e5c31af7Sopenharmony_ci	end
736e5c31af7Sopenharmony_ci
737e5c31af7Sopenharmony_ci	case unterminated_comment_1
738e5c31af7Sopenharmony_ci		version 300 es
739e5c31af7Sopenharmony_ci		expect compile_fail
740e5c31af7Sopenharmony_ci		both ""
741e5c31af7Sopenharmony_ci			#version 300 es
742e5c31af7Sopenharmony_ci			precision mediump float;
743e5c31af7Sopenharmony_ci			${DECLARATIONS}
744e5c31af7Sopenharmony_ci			void main()
745e5c31af7Sopenharmony_ci			{
746e5c31af7Sopenharmony_ci				/*
747e5c31af7Sopenharmony_ci			}
748e5c31af7Sopenharmony_ci		""
749e5c31af7Sopenharmony_ci	end
750e5c31af7Sopenharmony_ci
751e5c31af7Sopenharmony_ci	case unterminated_comment_2
752e5c31af7Sopenharmony_ci		version 300 es
753e5c31af7Sopenharmony_ci		expect compile_fail
754e5c31af7Sopenharmony_ci		both ""
755e5c31af7Sopenharmony_ci			#version 300 es
756e5c31af7Sopenharmony_ci			/*
757e5c31af7Sopenharmony_ci			precision mediump float;
758e5c31af7Sopenharmony_ci			${DECLARATIONS}
759e5c31af7Sopenharmony_ci			void main()
760e5c31af7Sopenharmony_ci			{
761e5c31af7Sopenharmony_ci			}
762e5c31af7Sopenharmony_ci		""
763e5c31af7Sopenharmony_ci	end
764e5c31af7Sopenharmony_ci
765e5c31af7Sopenharmony_ciend # comments
766e5c31af7Sopenharmony_ci
767e5c31af7Sopenharmony_cigroup line_continuation "Line Continuation Tests"
768e5c31af7Sopenharmony_ci
769e5c31af7Sopenharmony_ci	case comment
770e5c31af7Sopenharmony_ci		version 300 es
771e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
772e5c31af7Sopenharmony_ci		both ""
773e5c31af7Sopenharmony_ci			#version 300 es
774e5c31af7Sopenharmony_ci			precision mediump float;
775e5c31af7Sopenharmony_ci			${DECLARATIONS}
776e5c31af7Sopenharmony_ci
777e5c31af7Sopenharmony_ci			void main ()
778e5c31af7Sopenharmony_ci			{
779e5c31af7Sopenharmony_ci				out0 = 1.0;
780e5c31af7Sopenharmony_ci				// comment \\
781e5c31af7Sopenharmony_ci				out0 = -1.0;
782e5c31af7Sopenharmony_ci				${OUTPUT}
783e5c31af7Sopenharmony_ci			}
784e5c31af7Sopenharmony_ci		""
785e5c31af7Sopenharmony_ci	end
786e5c31af7Sopenharmony_ci
787e5c31af7Sopenharmony_ci	case define
788e5c31af7Sopenharmony_ci		version 300 es
789e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
790e5c31af7Sopenharmony_ci		both ""
791e5c31af7Sopenharmony_ci			#version 300 es
792e5c31af7Sopenharmony_ci			precision mediump float;
793e5c31af7Sopenharmony_ci			${DECLARATIONS}
794e5c31af7Sopenharmony_ci			#define A(X) \\
795e5c31af7Sopenharmony_ci				(-1.0*(X))
796e5c31af7Sopenharmony_ci
797e5c31af7Sopenharmony_ci			void main ()
798e5c31af7Sopenharmony_ci			{
799e5c31af7Sopenharmony_ci				out0 = A(-1.0);
800e5c31af7Sopenharmony_ci				${OUTPUT}
801e5c31af7Sopenharmony_ci			}
802e5c31af7Sopenharmony_ci		""
803e5c31af7Sopenharmony_ci	end
804e5c31af7Sopenharmony_ci
805e5c31af7Sopenharmony_ci	case preprocessing_token
806e5c31af7Sopenharmony_ci		version 300 es
807e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
808e5c31af7Sopenharmony_ci		both ""
809e5c31af7Sopenharmony_ci			#version 300 es
810e5c31af7Sopenharmony_ci			precision mediump float;
811e5c31af7Sopenharmony_ci			${DECLARATIONS}
812e5c31af7Sopenharmony_ci			#def\\
813e5c31af7Sopenharmony_ci			ine A(X) (-1.0*(X))
814e5c31af7Sopenharmony_ci
815e5c31af7Sopenharmony_ci			void main ()
816e5c31af7Sopenharmony_ci			{
817e5c31af7Sopenharmony_ci				out0 = A(-1.0);
818e5c31af7Sopenharmony_ci				${OUTPUT}
819e5c31af7Sopenharmony_ci			}
820e5c31af7Sopenharmony_ci		""
821e5c31af7Sopenharmony_ci	end
822e5c31af7Sopenharmony_ci
823e5c31af7Sopenharmony_ci	case token
824e5c31af7Sopenharmony_ci		version 300 es
825e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
826e5c31af7Sopenharmony_ci		both ""
827e5c31af7Sopenharmony_ci			#version 300 es
828e5c31af7Sopenharmony_ci			precision mediump float;
829e5c31af7Sopenharmony_ci			${DECLARATIONS}
830e5c31af7Sopenharmony_ci
831e5c31af7Sopenharmony_ci			void main ()
832e5c31af7Sopenharmony_ci			{
833e5c31af7Sopenharmony_ci				float f\\
834e5c31af7Sopenharmony_ci			oo = 1.0;
835e5c31af7Sopenharmony_ci				out0 = foo;
836e5c31af7Sopenharmony_ci				${OUTPUT}
837e5c31af7Sopenharmony_ci			}
838e5c31af7Sopenharmony_ci		""
839e5c31af7Sopenharmony_ci	end
840e5c31af7Sopenharmony_ci
841e5c31af7Sopenharmony_ci	case middle_of_line
842e5c31af7Sopenharmony_ci		version 300 es
843e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
844e5c31af7Sopenharmony_ci		both ""
845e5c31af7Sopenharmony_ci			#version 300 es
846e5c31af7Sopenharmony_ci			precision mediump float;
847e5c31af7Sopenharmony_ci			${DECLARATIONS}
848e5c31af7Sopenharmony_ci			#define A a \\ b
849e5c31af7Sopenharmony_ci			#define B 1.0
850e5c31af7Sopenharmony_ci
851e5c31af7Sopenharmony_ci			void main ()
852e5c31af7Sopenharmony_ci			{
853e5c31af7Sopenharmony_ci				out0 = B;
854e5c31af7Sopenharmony_ci				${OUTPUT}
855e5c31af7Sopenharmony_ci			}
856e5c31af7Sopenharmony_ci		""
857e5c31af7Sopenharmony_ci	end
858e5c31af7Sopenharmony_ci
859e5c31af7Sopenharmony_ciend # line_continuation
860e5c31af7Sopenharmony_ci
861e5c31af7Sopenharmony_cigroup function_definitions "Function Definitions Tests"
862e5c31af7Sopenharmony_ci
863e5c31af7Sopenharmony_ci	case same_object_and_function_param
864e5c31af7Sopenharmony_ci		version 300 es
865e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
866e5c31af7Sopenharmony_ci
867e5c31af7Sopenharmony_ci		both ""
868e5c31af7Sopenharmony_ci			#version 300 es
869e5c31af7Sopenharmony_ci			precision mediump float;
870e5c31af7Sopenharmony_ci			${DECLARATIONS}
871e5c31af7Sopenharmony_ci			#define VALUE 1.0
872e5c31af7Sopenharmony_ci			#define FUNCTION(VALUE, B)	(VALUE-B)
873e5c31af7Sopenharmony_ci
874e5c31af7Sopenharmony_ci			void main()
875e5c31af7Sopenharmony_ci			{
876e5c31af7Sopenharmony_ci				out0 = FUNCTION(3.0, 2.0);
877e5c31af7Sopenharmony_ci				${OUTPUT}
878e5c31af7Sopenharmony_ci			}
879e5c31af7Sopenharmony_ci		""
880e5c31af7Sopenharmony_ci	end
881e5c31af7Sopenharmony_ci
882e5c31af7Sopenharmony_ci	case complex_func
883e5c31af7Sopenharmony_ci		version 300 es
884e5c31af7Sopenharmony_ci		values { output float out0 = 518.5; }
885e5c31af7Sopenharmony_ci		both ""
886e5c31af7Sopenharmony_ci			#version 300 es
887e5c31af7Sopenharmony_ci			precision mediump float;
888e5c31af7Sopenharmony_ci			${DECLARATIONS}
889e5c31af7Sopenharmony_ci			#define AAA(a,b)	a*(BBB(a,b))
890e5c31af7Sopenharmony_ci			#define BBB(a,b)	a-b
891e5c31af7Sopenharmony_ci
892e5c31af7Sopenharmony_ci			void main()
893e5c31af7Sopenharmony_ci			{
894e5c31af7Sopenharmony_ci				out0 = BBB(AAA(8.0/4.0, 2.0)*BBB(2.0*2.0,0.75*2.0), AAA(40.0,10.0*BBB(5.0,3.0)));
895e5c31af7Sopenharmony_ci				${OUTPUT}
896e5c31af7Sopenharmony_ci			}
897e5c31af7Sopenharmony_ci		""
898e5c31af7Sopenharmony_ci	end
899e5c31af7Sopenharmony_ci
900e5c31af7Sopenharmony_ci	case function_definition_with_comments
901e5c31af7Sopenharmony_ci		version 300 es
902e5c31af7Sopenharmony_ci		values { output float out0 = 3.0; }
903e5c31af7Sopenharmony_ci		both ""
904e5c31af7Sopenharmony_ci			#version 300 es
905e5c31af7Sopenharmony_ci			precision mediump float;
906e5c31af7Sopenharmony_ci			${DECLARATIONS}
907e5c31af7Sopenharmony_ci			/* sdfljk */			#/* sdfljk */define /* sdfljk */ FUNC( /* jklsfd*/a /*sfdjklh*/, /*sdfklj */b /*sdfklj*/)		a+b
908e5c31af7Sopenharmony_ci
909e5c31af7Sopenharmony_ci			void main()
910e5c31af7Sopenharmony_ci			{
911e5c31af7Sopenharmony_ci				out0 = FUNC(1.0, 2.0);
912e5c31af7Sopenharmony_ci				${OUTPUT}
913e5c31af7Sopenharmony_ci			}
914e5c31af7Sopenharmony_ci		""
915e5c31af7Sopenharmony_ci	end
916e5c31af7Sopenharmony_ci
917e5c31af7Sopenharmony_ciend # function_definitions
918e5c31af7Sopenharmony_ci
919e5c31af7Sopenharmony_cigroup recursion "Recursions Tests"
920e5c31af7Sopenharmony_ci
921e5c31af7Sopenharmony_ci	case recursion_1
922e5c31af7Sopenharmony_ci		version 300 es
923e5c31af7Sopenharmony_ci		expect compile_fail
924e5c31af7Sopenharmony_ci		both ""
925e5c31af7Sopenharmony_ci			#version 300 es
926e5c31af7Sopenharmony_ci			precision mediump float;
927e5c31af7Sopenharmony_ci			${DECLARATIONS}
928e5c31af7Sopenharmony_ci			# define AAA	AAA
929e5c31af7Sopenharmony_ci
930e5c31af7Sopenharmony_ci			void main()
931e5c31af7Sopenharmony_ci			{
932e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(AAA);
933e5c31af7Sopenharmony_ci			}
934e5c31af7Sopenharmony_ci		""
935e5c31af7Sopenharmony_ci	end
936e5c31af7Sopenharmony_ci
937e5c31af7Sopenharmony_ci	case recursion_2
938e5c31af7Sopenharmony_ci		version 300 es
939e5c31af7Sopenharmony_ci		expect compile_fail
940e5c31af7Sopenharmony_ci		both ""
941e5c31af7Sopenharmony_ci			#version 300 es
942e5c31af7Sopenharmony_ci			precision mediump float;
943e5c31af7Sopenharmony_ci			${DECLARATIONS}
944e5c31af7Sopenharmony_ci			# define AAA	BBB
945e5c31af7Sopenharmony_ci			#define BBB		AAA
946e5c31af7Sopenharmony_ci
947e5c31af7Sopenharmony_ci			void main()
948e5c31af7Sopenharmony_ci			{
949e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(AAA);
950e5c31af7Sopenharmony_ci			}
951e5c31af7Sopenharmony_ci		""
952e5c31af7Sopenharmony_ci	end
953e5c31af7Sopenharmony_ci
954e5c31af7Sopenharmony_ci	case recursion_3
955e5c31af7Sopenharmony_ci		version 300 es
956e5c31af7Sopenharmony_ci		expect compile_fail
957e5c31af7Sopenharmony_ci		both ""
958e5c31af7Sopenharmony_ci			#version 300 es
959e5c31af7Sopenharmony_ci			precision mediump float;
960e5c31af7Sopenharmony_ci			${DECLARATIONS}
961e5c31af7Sopenharmony_ci			# define AAA	(1.0+BBB)
962e5c31af7Sopenharmony_ci			#define BBB		(2.0+AAA)
963e5c31af7Sopenharmony_ci
964e5c31af7Sopenharmony_ci			void main()
965e5c31af7Sopenharmony_ci			{
966e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(AAA);
967e5c31af7Sopenharmony_ci			}
968e5c31af7Sopenharmony_ci		""
969e5c31af7Sopenharmony_ci	end
970e5c31af7Sopenharmony_ci
971e5c31af7Sopenharmony_ci	case recursion_4
972e5c31af7Sopenharmony_ci		version 300 es
973e5c31af7Sopenharmony_ci		expect compile_fail
974e5c31af7Sopenharmony_ci		both ""
975e5c31af7Sopenharmony_ci			#version 300 es
976e5c31af7Sopenharmony_ci			precision mediump float;
977e5c31af7Sopenharmony_ci			${DECLARATIONS}
978e5c31af7Sopenharmony_ci			# define AAA(a)	AAA(a)
979e5c31af7Sopenharmony_ci
980e5c31af7Sopenharmony_ci			void main()
981e5c31af7Sopenharmony_ci			{
982e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(AAA(1.0));
983e5c31af7Sopenharmony_ci			}
984e5c31af7Sopenharmony_ci		""
985e5c31af7Sopenharmony_ci	end
986e5c31af7Sopenharmony_ci
987e5c31af7Sopenharmony_ci	case recursion_5
988e5c31af7Sopenharmony_ci		version 300 es
989e5c31af7Sopenharmony_ci		expect compile_fail
990e5c31af7Sopenharmony_ci		both ""
991e5c31af7Sopenharmony_ci			#version 300 es
992e5c31af7Sopenharmony_ci			precision mediump float;
993e5c31af7Sopenharmony_ci			${DECLARATIONS}
994e5c31af7Sopenharmony_ci			# define AAA(a, b)	AAA(b, a)
995e5c31af7Sopenharmony_ci
996e5c31af7Sopenharmony_ci			void main()
997e5c31af7Sopenharmony_ci			{
998e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(AAA(1.0, 2.0));
999e5c31af7Sopenharmony_ci			}
1000e5c31af7Sopenharmony_ci		""
1001e5c31af7Sopenharmony_ci	end
1002e5c31af7Sopenharmony_ci
1003e5c31af7Sopenharmony_ciend # recursion
1004e5c31af7Sopenharmony_ci
1005e5c31af7Sopenharmony_cigroup function_redefinitions "Function Redefinition Tests"
1006e5c31af7Sopenharmony_ci
1007e5c31af7Sopenharmony_ci	case function_redefinition_1
1008e5c31af7Sopenharmony_ci		version 300 es
1009e5c31af7Sopenharmony_ci		values { output float out0 = 3.0; }
1010e5c31af7Sopenharmony_ci		both ""
1011e5c31af7Sopenharmony_ci			#version 300 es
1012e5c31af7Sopenharmony_ci			precision mediump float;
1013e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1014e5c31af7Sopenharmony_ci			# define FUNC( a, b)		a+b
1015e5c31af7Sopenharmony_ci
1016e5c31af7Sopenharmony_ci			${DECLARATIONS}
1017e5c31af7Sopenharmony_ci			void main()
1018e5c31af7Sopenharmony_ci			{
1019e5c31af7Sopenharmony_ci				out0 = FUNC(1.0, 2.0);
1020e5c31af7Sopenharmony_ci				${OUTPUT}
1021e5c31af7Sopenharmony_ci			}
1022e5c31af7Sopenharmony_ci		""
1023e5c31af7Sopenharmony_ci	end
1024e5c31af7Sopenharmony_ci
1025e5c31af7Sopenharmony_ci	case function_redefinition_2
1026e5c31af7Sopenharmony_ci		version 300 es
1027e5c31af7Sopenharmony_ci		values { output float out0 = 3.0; }
1028e5c31af7Sopenharmony_ci		both ""
1029e5c31af7Sopenharmony_ci			#version 300 es
1030e5c31af7Sopenharmony_ci			precision mediump float;
1031e5c31af7Sopenharmony_ci			# define FUNC(a,b)		(a  +b)
1032e5c31af7Sopenharmony_ci			# define FUNC( a, b )(a			+b)
1033e5c31af7Sopenharmony_ci
1034e5c31af7Sopenharmony_ci			${DECLARATIONS}
1035e5c31af7Sopenharmony_ci			void main()
1036e5c31af7Sopenharmony_ci			{
1037e5c31af7Sopenharmony_ci				out0 = FUNC(1.0, 2.0);
1038e5c31af7Sopenharmony_ci				${OUTPUT}
1039e5c31af7Sopenharmony_ci			}
1040e5c31af7Sopenharmony_ci		""
1041e5c31af7Sopenharmony_ci	end
1042e5c31af7Sopenharmony_ci
1043e5c31af7Sopenharmony_ci	case function_redefinition_3
1044e5c31af7Sopenharmony_ci		version 300 es
1045e5c31af7Sopenharmony_ci		values { output float out0 = 3.0; }
1046e5c31af7Sopenharmony_ci		both ""
1047e5c31af7Sopenharmony_ci			#version 300 es
1048e5c31af7Sopenharmony_ci			precision mediump float;
1049e5c31af7Sopenharmony_ci			# define FUNC(a,b)		(a  +b)
1050e5c31af7Sopenharmony_ci			# define FUNC(a,b)(a	/* comment
1051e5c31af7Sopenharmony_ci									 */ +b)
1052e5c31af7Sopenharmony_ci
1053e5c31af7Sopenharmony_ci			${DECLARATIONS}
1054e5c31af7Sopenharmony_ci			void main()
1055e5c31af7Sopenharmony_ci			{
1056e5c31af7Sopenharmony_ci				out0 = FUNC(1.0, 2.0);
1057e5c31af7Sopenharmony_ci				${OUTPUT}
1058e5c31af7Sopenharmony_ci			}
1059e5c31af7Sopenharmony_ci		""
1060e5c31af7Sopenharmony_ci	end
1061e5c31af7Sopenharmony_ci
1062e5c31af7Sopenharmony_ci	case invalid_function_redefinition_param_1
1063e5c31af7Sopenharmony_ci		version 300 es
1064e5c31af7Sopenharmony_ci		expect compile_fail
1065e5c31af7Sopenharmony_ci		both ""
1066e5c31af7Sopenharmony_ci			#version 300 es
1067e5c31af7Sopenharmony_ci			precision mediump float;
1068e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1069e5c31af7Sopenharmony_ci			# define FUNC(A,b)		A+b
1070e5c31af7Sopenharmony_ci
1071e5c31af7Sopenharmony_ci			${DECLARATIONS}
1072e5c31af7Sopenharmony_ci			void main()
1073e5c31af7Sopenharmony_ci			{
1074e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
1075e5c31af7Sopenharmony_ci			}
1076e5c31af7Sopenharmony_ci		""
1077e5c31af7Sopenharmony_ci	end
1078e5c31af7Sopenharmony_ci
1079e5c31af7Sopenharmony_ci	case invalid_function_redefinition_param_2
1080e5c31af7Sopenharmony_ci		version 300 es
1081e5c31af7Sopenharmony_ci		expect compile_fail
1082e5c31af7Sopenharmony_ci		both ""
1083e5c31af7Sopenharmony_ci			#version 300 es
1084e5c31af7Sopenharmony_ci			precision mediump float;
1085e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1086e5c31af7Sopenharmony_ci			# define FUNC(a,b,c)	a+b+c
1087e5c31af7Sopenharmony_ci
1088e5c31af7Sopenharmony_ci			${DECLARATIONS}
1089e5c31af7Sopenharmony_ci			void main()
1090e5c31af7Sopenharmony_ci			{
1091e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
1092e5c31af7Sopenharmony_ci			}
1093e5c31af7Sopenharmony_ci		""
1094e5c31af7Sopenharmony_ci	end
1095e5c31af7Sopenharmony_ci
1096e5c31af7Sopenharmony_ci	case invalid_function_redefinition_param_3
1097e5c31af7Sopenharmony_ci		version 300 es
1098e5c31af7Sopenharmony_ci		expect compile_fail
1099e5c31af7Sopenharmony_ci		both ""
1100e5c31af7Sopenharmony_ci			#version 300 es
1101e5c31af7Sopenharmony_ci			precision mediump float;
1102e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1103e5c31af7Sopenharmony_ci			# define FUNC(a,b)		b+a
1104e5c31af7Sopenharmony_ci
1105e5c31af7Sopenharmony_ci			${DECLARATIONS}
1106e5c31af7Sopenharmony_ci			void main()
1107e5c31af7Sopenharmony_ci			{
1108e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
1109e5c31af7Sopenharmony_ci			}
1110e5c31af7Sopenharmony_ci		""
1111e5c31af7Sopenharmony_ci	end
1112e5c31af7Sopenharmony_ci
1113e5c31af7Sopenharmony_ciend # functions_redefinitions
1114e5c31af7Sopenharmony_ci
1115e5c31af7Sopenharmony_cigroup invalid_function_definitions "Invalid Function Definition Tests"
1116e5c31af7Sopenharmony_ci
1117e5c31af7Sopenharmony_ci	case arguments_1
1118e5c31af7Sopenharmony_ci		version 300 es
1119e5c31af7Sopenharmony_ci		expect compile_fail
1120e5c31af7Sopenharmony_ci		both ""
1121e5c31af7Sopenharmony_ci			#version 300 es
1122e5c31af7Sopenharmony_ci			precision mediump float;
1123e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1124e5c31af7Sopenharmony_ci
1125e5c31af7Sopenharmony_ci			${DECLARATIONS}
1126e5c31af7Sopenharmony_ci			void main()
1127e5c31af7Sopenharmony_ci			{
1128e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC);
1129e5c31af7Sopenharmony_ci			}
1130e5c31af7Sopenharmony_ci		""
1131e5c31af7Sopenharmony_ci	end
1132e5c31af7Sopenharmony_ci
1133e5c31af7Sopenharmony_ci	case arguments_2
1134e5c31af7Sopenharmony_ci		version 300 es
1135e5c31af7Sopenharmony_ci		expect compile_fail
1136e5c31af7Sopenharmony_ci		both ""
1137e5c31af7Sopenharmony_ci			#version 300 es
1138e5c31af7Sopenharmony_ci			precision mediump float;
1139e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1140e5c31af7Sopenharmony_ci
1141e5c31af7Sopenharmony_ci			${DECLARATIONS}
1142e5c31af7Sopenharmony_ci			void main()
1143e5c31af7Sopenharmony_ci			{
1144e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC());
1145e5c31af7Sopenharmony_ci			}
1146e5c31af7Sopenharmony_ci		""
1147e5c31af7Sopenharmony_ci	end
1148e5c31af7Sopenharmony_ci
1149e5c31af7Sopenharmony_ci	case arguments_3
1150e5c31af7Sopenharmony_ci		version 300 es
1151e5c31af7Sopenharmony_ci		expect compile_fail
1152e5c31af7Sopenharmony_ci		both ""
1153e5c31af7Sopenharmony_ci			#version 300 es
1154e5c31af7Sopenharmony_ci			precision mediump float;
1155e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1156e5c31af7Sopenharmony_ci
1157e5c31af7Sopenharmony_ci			${DECLARATIONS}
1158e5c31af7Sopenharmony_ci			void main()
1159e5c31af7Sopenharmony_ci			{
1160e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC((();
1161e5c31af7Sopenharmony_ci			}
1162e5c31af7Sopenharmony_ci		""
1163e5c31af7Sopenharmony_ci	end
1164e5c31af7Sopenharmony_ci
1165e5c31af7Sopenharmony_ci	case arguments_4
1166e5c31af7Sopenharmony_ci		version 300 es
1167e5c31af7Sopenharmony_ci		expect compile_fail
1168e5c31af7Sopenharmony_ci		both ""
1169e5c31af7Sopenharmony_ci			#version 300 es
1170e5c31af7Sopenharmony_ci			precision mediump float;
1171e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1172e5c31af7Sopenharmony_ci
1173e5c31af7Sopenharmony_ci			${DECLARATIONS}
1174e5c31af7Sopenharmony_ci			void main()
1175e5c31af7Sopenharmony_ci			{
1176e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC));
1177e5c31af7Sopenharmony_ci			}
1178e5c31af7Sopenharmony_ci		""
1179e5c31af7Sopenharmony_ci	end
1180e5c31af7Sopenharmony_ci
1181e5c31af7Sopenharmony_ci	case arguments_5
1182e5c31af7Sopenharmony_ci		version 300 es
1183e5c31af7Sopenharmony_ci		expect compile_fail
1184e5c31af7Sopenharmony_ci		both ""
1185e5c31af7Sopenharmony_ci			#version 300 es
1186e5c31af7Sopenharmony_ci			precision mediump float;
1187e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1188e5c31af7Sopenharmony_ci
1189e5c31af7Sopenharmony_ci			${DECLARATIONS}
1190e5c31af7Sopenharmony_ci			void main()
1191e5c31af7Sopenharmony_ci			{
1192e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0));
1193e5c31af7Sopenharmony_ci			}
1194e5c31af7Sopenharmony_ci		""
1195e5c31af7Sopenharmony_ci	end
1196e5c31af7Sopenharmony_ci
1197e5c31af7Sopenharmony_ci	case arguments_6
1198e5c31af7Sopenharmony_ci		version 300 es
1199e5c31af7Sopenharmony_ci		expect compile_fail
1200e5c31af7Sopenharmony_ci		both ""
1201e5c31af7Sopenharmony_ci			#version 300 es
1202e5c31af7Sopenharmony_ci			precision mediump float;
1203e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1204e5c31af7Sopenharmony_ci
1205e5c31af7Sopenharmony_ci			${DECLARATIONS}
1206e5c31af7Sopenharmony_ci			void main()
1207e5c31af7Sopenharmony_ci			{
1208e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
1209e5c31af7Sopenharmony_ci			}
1210e5c31af7Sopenharmony_ci		""
1211e5c31af7Sopenharmony_ci	end
1212e5c31af7Sopenharmony_ci
1213e5c31af7Sopenharmony_ci	case arguments_7
1214e5c31af7Sopenharmony_ci		version 300 es
1215e5c31af7Sopenharmony_ci		expect compile_fail
1216e5c31af7Sopenharmony_ci		both ""
1217e5c31af7Sopenharmony_ci			#version 300 es
1218e5c31af7Sopenharmony_ci			precision mediump float;
1219e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1220e5c31af7Sopenharmony_ci
1221e5c31af7Sopenharmony_ci			${DECLARATIONS}
1222e5c31af7Sopenharmony_ci			void main()
1223e5c31af7Sopenharmony_ci			{
1224e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,));
1225e5c31af7Sopenharmony_ci			}
1226e5c31af7Sopenharmony_ci		""
1227e5c31af7Sopenharmony_ci	end
1228e5c31af7Sopenharmony_ci
1229e5c31af7Sopenharmony_ci	case arguments_8
1230e5c31af7Sopenharmony_ci		version 300 es
1231e5c31af7Sopenharmony_ci		expect compile_fail
1232e5c31af7Sopenharmony_ci		both ""
1233e5c31af7Sopenharmony_ci			#version 300 es
1234e5c31af7Sopenharmony_ci			precision mediump float;
1235e5c31af7Sopenharmony_ci			# define FUNC(a,b)		a+b
1236e5c31af7Sopenharmony_ci
1237e5c31af7Sopenharmony_ci			${DECLARATIONS}
1238e5c31af7Sopenharmony_ci			void main()
1239e5c31af7Sopenharmony_ci			{
1240e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
1241e5c31af7Sopenharmony_ci			}
1242e5c31af7Sopenharmony_ci		""
1243e5c31af7Sopenharmony_ci	end
1244e5c31af7Sopenharmony_ci
1245e5c31af7Sopenharmony_ci	case unique_param_name
1246e5c31af7Sopenharmony_ci		version 300 es
1247e5c31af7Sopenharmony_ci		expect compile_fail
1248e5c31af7Sopenharmony_ci		both ""
1249e5c31af7Sopenharmony_ci			#version 300 es
1250e5c31af7Sopenharmony_ci			precision mediump float;
1251e5c31af7Sopenharmony_ci			# define FUNC(a,a)		a+a
1252e5c31af7Sopenharmony_ci
1253e5c31af7Sopenharmony_ci			${DECLARATIONS}
1254e5c31af7Sopenharmony_ci			void main()
1255e5c31af7Sopenharmony_ci			{
1256e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1257e5c31af7Sopenharmony_ci			}
1258e5c31af7Sopenharmony_ci		""
1259e5c31af7Sopenharmony_ci	end
1260e5c31af7Sopenharmony_ci
1261e5c31af7Sopenharmony_ci	case argument_list_1
1262e5c31af7Sopenharmony_ci		version 300 es
1263e5c31af7Sopenharmony_ci		expect compile_fail
1264e5c31af7Sopenharmony_ci		both ""
1265e5c31af7Sopenharmony_ci			#version 300 es
1266e5c31af7Sopenharmony_ci			precision mediump float;
1267e5c31af7Sopenharmony_ci			# define FUNC(a b)		a+b
1268e5c31af7Sopenharmony_ci
1269e5c31af7Sopenharmony_ci			${DECLARATIONS}
1270e5c31af7Sopenharmony_ci			void main()
1271e5c31af7Sopenharmony_ci			{
1272e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1273e5c31af7Sopenharmony_ci			}
1274e5c31af7Sopenharmony_ci		""
1275e5c31af7Sopenharmony_ci	end
1276e5c31af7Sopenharmony_ci
1277e5c31af7Sopenharmony_ci	case argument_list_2
1278e5c31af7Sopenharmony_ci		version 300 es
1279e5c31af7Sopenharmony_ci		expect compile_fail
1280e5c31af7Sopenharmony_ci		both ""
1281e5c31af7Sopenharmony_ci			#version 300 es
1282e5c31af7Sopenharmony_ci			precision mediump float;
1283e5c31af7Sopenharmony_ci			# define FUNC(a + b)		a+b
1284e5c31af7Sopenharmony_ci
1285e5c31af7Sopenharmony_ci			${DECLARATIONS}
1286e5c31af7Sopenharmony_ci			void main()
1287e5c31af7Sopenharmony_ci			{
1288e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1289e5c31af7Sopenharmony_ci			}
1290e5c31af7Sopenharmony_ci		""
1291e5c31af7Sopenharmony_ci	end
1292e5c31af7Sopenharmony_ci
1293e5c31af7Sopenharmony_ci	case argument_list_3
1294e5c31af7Sopenharmony_ci		version 300 es
1295e5c31af7Sopenharmony_ci		expect compile_fail
1296e5c31af7Sopenharmony_ci		both ""
1297e5c31af7Sopenharmony_ci			#version 300 es
1298e5c31af7Sopenharmony_ci			precision mediump float;
1299e5c31af7Sopenharmony_ci			# define FUNC(,a,b)		a+b
1300e5c31af7Sopenharmony_ci
1301e5c31af7Sopenharmony_ci			${DECLARATIONS}
1302e5c31af7Sopenharmony_ci			void main()
1303e5c31af7Sopenharmony_ci			{
1304e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1305e5c31af7Sopenharmony_ci			}
1306e5c31af7Sopenharmony_ci		""
1307e5c31af7Sopenharmony_ci	end
1308e5c31af7Sopenharmony_ci
1309e5c31af7Sopenharmony_ci	case no_closing_parenthesis_1
1310e5c31af7Sopenharmony_ci		version 300 es
1311e5c31af7Sopenharmony_ci		expect compile_fail
1312e5c31af7Sopenharmony_ci		both ""
1313e5c31af7Sopenharmony_ci			#version 300 es
1314e5c31af7Sopenharmony_ci			precision mediump float;
1315e5c31af7Sopenharmony_ci			# define FUNC(
1316e5c31af7Sopenharmony_ci
1317e5c31af7Sopenharmony_ci			${DECLARATIONS}
1318e5c31af7Sopenharmony_ci			void main()
1319e5c31af7Sopenharmony_ci			{
1320e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1321e5c31af7Sopenharmony_ci			}
1322e5c31af7Sopenharmony_ci		""
1323e5c31af7Sopenharmony_ci	end
1324e5c31af7Sopenharmony_ci
1325e5c31af7Sopenharmony_ci	case no_closing_parenthesis_2
1326e5c31af7Sopenharmony_ci		version 300 es
1327e5c31af7Sopenharmony_ci		expect compile_fail
1328e5c31af7Sopenharmony_ci		both ""
1329e5c31af7Sopenharmony_ci			#version 300 es
1330e5c31af7Sopenharmony_ci			precision mediump float;
1331e5c31af7Sopenharmony_ci			# define FUNC(A  a+b
1332e5c31af7Sopenharmony_ci
1333e5c31af7Sopenharmony_ci			${DECLARATIONS}
1334e5c31af7Sopenharmony_ci			void main()
1335e5c31af7Sopenharmony_ci			{
1336e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1337e5c31af7Sopenharmony_ci			}
1338e5c31af7Sopenharmony_ci		""
1339e5c31af7Sopenharmony_ci	end
1340e5c31af7Sopenharmony_ci
1341e5c31af7Sopenharmony_ci	case no_closing_parenthesis_3
1342e5c31af7Sopenharmony_ci		version 300 es
1343e5c31af7Sopenharmony_ci		expect compile_fail
1344e5c31af7Sopenharmony_ci		both ""
1345e5c31af7Sopenharmony_ci			#version 300 es
1346e5c31af7Sopenharmony_ci			precision mediump float;
1347e5c31af7Sopenharmony_ci			# define FUNC(A,B,C  a+b
1348e5c31af7Sopenharmony_ci
1349e5c31af7Sopenharmony_ci			${DECLARATIONS}
1350e5c31af7Sopenharmony_ci			void main()
1351e5c31af7Sopenharmony_ci			{
1352e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
1353e5c31af7Sopenharmony_ci			}
1354e5c31af7Sopenharmony_ci		""
1355e5c31af7Sopenharmony_ci	end
1356e5c31af7Sopenharmony_ci
1357e5c31af7Sopenharmony_ci	case no_closing_parenthesis_4
1358e5c31af7Sopenharmony_ci		version 300 es
1359e5c31af7Sopenharmony_ci		expect compile_fail
1360e5c31af7Sopenharmony_ci		both ""
1361e5c31af7Sopenharmony_ci			#version 300 es
1362e5c31af7Sopenharmony_ci			precision mediump float;
1363e5c31af7Sopenharmony_ci			# define FUNC(
1364e5c31af7Sopenharmony_ci		""
1365e5c31af7Sopenharmony_ci	end
1366e5c31af7Sopenharmony_ci
1367e5c31af7Sopenharmony_ciend # invalid_function_definitions
1368e5c31af7Sopenharmony_ci
1369e5c31af7Sopenharmony_cigroup semantic "Semantic Tests"
1370e5c31af7Sopenharmony_ci
1371e5c31af7Sopenharmony_ci	case ops_as_arguments
1372e5c31af7Sopenharmony_ci		version 300 es
1373e5c31af7Sopenharmony_ci		values { output float out0 = 20.0; }
1374e5c31af7Sopenharmony_ci		both ""
1375e5c31af7Sopenharmony_ci			#version 300 es
1376e5c31af7Sopenharmony_ci			precision mediump float;
1377e5c31af7Sopenharmony_ci			${DECLARATIONS}
1378e5c31af7Sopenharmony_ci			#define FOO(a, b)		(1 a 9) b 2
1379e5c31af7Sopenharmony_ci
1380e5c31af7Sopenharmony_ci			void main()
1381e5c31af7Sopenharmony_ci			{
1382e5c31af7Sopenharmony_ci				out0 = float(FOO(+, *));
1383e5c31af7Sopenharmony_ci				${OUTPUT}
1384e5c31af7Sopenharmony_ci			}
1385e5c31af7Sopenharmony_ci		""
1386e5c31af7Sopenharmony_ci	end
1387e5c31af7Sopenharmony_ci
1388e5c31af7Sopenharmony_ci	case correct_order
1389e5c31af7Sopenharmony_ci		version 300 es
1390e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1391e5c31af7Sopenharmony_ci		both ""
1392e5c31af7Sopenharmony_ci			#version 300 es
1393e5c31af7Sopenharmony_ci			precision mediump float;
1394e5c31af7Sopenharmony_ci			${DECLARATIONS}
1395e5c31af7Sopenharmony_ci			#define FUNC(A) A
1396e5c31af7Sopenharmony_ci			#define A 2.0
1397e5c31af7Sopenharmony_ci
1398e5c31af7Sopenharmony_ci			void main()
1399e5c31af7Sopenharmony_ci			{
1400e5c31af7Sopenharmony_ci				out0 = FUNC(A - 1.0);
1401e5c31af7Sopenharmony_ci				${OUTPUT}
1402e5c31af7Sopenharmony_ci			}
1403e5c31af7Sopenharmony_ci		""
1404e5c31af7Sopenharmony_ci	end
1405e5c31af7Sopenharmony_ci
1406e5c31af7Sopenharmony_ciend # semantic
1407e5c31af7Sopenharmony_ci
1408e5c31af7Sopenharmony_cigroup predefined_macros "Predefined Macros Tests"
1409e5c31af7Sopenharmony_ci
1410e5c31af7Sopenharmony_ci	case version
1411e5c31af7Sopenharmony_ci		version 300 es
1412e5c31af7Sopenharmony_ci		values { output float out0 = 300.0; }
1413e5c31af7Sopenharmony_ci		both ""
1414e5c31af7Sopenharmony_ci			#version 300 es
1415e5c31af7Sopenharmony_ci			precision mediump float;
1416e5c31af7Sopenharmony_ci			${DECLARATIONS}
1417e5c31af7Sopenharmony_ci			void main()
1418e5c31af7Sopenharmony_ci			{
1419e5c31af7Sopenharmony_ci				#define AAA __VERSION__
1420e5c31af7Sopenharmony_ci				out0 = float(AAA);
1421e5c31af7Sopenharmony_ci				${OUTPUT}
1422e5c31af7Sopenharmony_ci			}
1423e5c31af7Sopenharmony_ci		""
1424e5c31af7Sopenharmony_ci	end
1425e5c31af7Sopenharmony_ci
1426e5c31af7Sopenharmony_ci	case gl_es_1
1427e5c31af7Sopenharmony_ci		version 300 es
1428e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1429e5c31af7Sopenharmony_ci		both ""
1430e5c31af7Sopenharmony_ci			#version 300 es
1431e5c31af7Sopenharmony_ci			precision mediump float;
1432e5c31af7Sopenharmony_ci			${DECLARATIONS}
1433e5c31af7Sopenharmony_ci
1434e5c31af7Sopenharmony_ci			void main()
1435e5c31af7Sopenharmony_ci			{
1436e5c31af7Sopenharmony_ci				out0 = float(GL_ES);
1437e5c31af7Sopenharmony_ci				${OUTPUT}
1438e5c31af7Sopenharmony_ci			}
1439e5c31af7Sopenharmony_ci		""
1440e5c31af7Sopenharmony_ci	end
1441e5c31af7Sopenharmony_ci
1442e5c31af7Sopenharmony_ci	case gl_es_2
1443e5c31af7Sopenharmony_ci		version 300 es
1444e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1445e5c31af7Sopenharmony_ci		both ""
1446e5c31af7Sopenharmony_ci			#version 300 es
1447e5c31af7Sopenharmony_ci			precision mediump float;
1448e5c31af7Sopenharmony_ci			${DECLARATIONS}
1449e5c31af7Sopenharmony_ci			#define AAA(A) A
1450e5c31af7Sopenharmony_ci
1451e5c31af7Sopenharmony_ci			void main()
1452e5c31af7Sopenharmony_ci			{
1453e5c31af7Sopenharmony_ci				out0 = float(AAA(GL_ES));
1454e5c31af7Sopenharmony_ci				${OUTPUT}
1455e5c31af7Sopenharmony_ci			}
1456e5c31af7Sopenharmony_ci		""
1457e5c31af7Sopenharmony_ci	end
1458e5c31af7Sopenharmony_ci
1459e5c31af7Sopenharmony_ci	case line_1
1460e5c31af7Sopenharmony_ci		version 300 es
1461e5c31af7Sopenharmony_ci		values { output float out0 = 2.0; }
1462e5c31af7Sopenharmony_ci		both ""
1463e5c31af7Sopenharmony_ci			#version 300 es
1464e5c31af7Sopenharmony_ci			const mediump int line = __LINE__;
1465e5c31af7Sopenharmony_ci			precision mediump float;
1466e5c31af7Sopenharmony_ci			${DECLARATIONS}
1467e5c31af7Sopenharmony_ci			void main()
1468e5c31af7Sopenharmony_ci			{
1469e5c31af7Sopenharmony_ci				out0 = float(line);
1470e5c31af7Sopenharmony_ci				${OUTPUT}
1471e5c31af7Sopenharmony_ci			}
1472e5c31af7Sopenharmony_ci		""
1473e5c31af7Sopenharmony_ci	end
1474e5c31af7Sopenharmony_ci
1475e5c31af7Sopenharmony_ci	case file
1476e5c31af7Sopenharmony_ci		version 300 es
1477e5c31af7Sopenharmony_ci		values { output float out0 = 0.0; }
1478e5c31af7Sopenharmony_ci		both ""
1479e5c31af7Sopenharmony_ci			#version 300 es
1480e5c31af7Sopenharmony_ci			precision mediump float;
1481e5c31af7Sopenharmony_ci			${DECLARATIONS}
1482e5c31af7Sopenharmony_ci			void main()
1483e5c31af7Sopenharmony_ci			{
1484e5c31af7Sopenharmony_ci				out0 = float(__FILE__);
1485e5c31af7Sopenharmony_ci				${OUTPUT}
1486e5c31af7Sopenharmony_ci			}
1487e5c31af7Sopenharmony_ci		""
1488e5c31af7Sopenharmony_ci	end
1489e5c31af7Sopenharmony_ci
1490e5c31af7Sopenharmony_ci	case if_gl_es
1491e5c31af7Sopenharmony_ci		version 300 es
1492e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1493e5c31af7Sopenharmony_ci		both ""
1494e5c31af7Sopenharmony_ci			#version 300 es
1495e5c31af7Sopenharmony_ci			precision mediump float;
1496e5c31af7Sopenharmony_ci			${DECLARATIONS}
1497e5c31af7Sopenharmony_ci			void main()
1498e5c31af7Sopenharmony_ci			{
1499e5c31af7Sopenharmony_ci	#if GL_ES
1500e5c31af7Sopenharmony_ci				out0 = 1.0;
1501e5c31af7Sopenharmony_ci	#else
1502e5c31af7Sopenharmony_ci				out0 = -1.0;
1503e5c31af7Sopenharmony_ci	#endif
1504e5c31af7Sopenharmony_ci				${OUTPUT}
1505e5c31af7Sopenharmony_ci			}
1506e5c31af7Sopenharmony_ci		""
1507e5c31af7Sopenharmony_ci	end
1508e5c31af7Sopenharmony_ci
1509e5c31af7Sopenharmony_ci	case if_version
1510e5c31af7Sopenharmony_ci		version 300 es
1511e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1512e5c31af7Sopenharmony_ci		both ""
1513e5c31af7Sopenharmony_ci			#version 300 es
1514e5c31af7Sopenharmony_ci			precision mediump float;
1515e5c31af7Sopenharmony_ci			${DECLARATIONS}
1516e5c31af7Sopenharmony_ci			void main()
1517e5c31af7Sopenharmony_ci			{
1518e5c31af7Sopenharmony_ci	#if __VERSION__ == 300
1519e5c31af7Sopenharmony_ci				out0 = 1.0;
1520e5c31af7Sopenharmony_ci	#else
1521e5c31af7Sopenharmony_ci				out0 = -1.0;
1522e5c31af7Sopenharmony_ci	#endif
1523e5c31af7Sopenharmony_ci				${OUTPUT}
1524e5c31af7Sopenharmony_ci			}
1525e5c31af7Sopenharmony_ci		""
1526e5c31af7Sopenharmony_ci	end
1527e5c31af7Sopenharmony_ci
1528e5c31af7Sopenharmony_ci	case invalid_token_pasting
1529e5c31af7Sopenharmony_ci		version 300 es
1530e5c31af7Sopenharmony_ci		expect compile_fail
1531e5c31af7Sopenharmony_ci		both ""
1532e5c31af7Sopenharmony_ci			#version 300 es
1533e5c31af7Sopenharmony_ci			precision mediump float;
1534e5c31af7Sopenharmony_ci			${DECLARATIONS}
1535e5c31af7Sopenharmony_ci			#define OUT(N) token##N
1536e5c31af7Sopenharmony_ci
1537e5c31af7Sopenharmony_ci			void main()
1538e5c31af7Sopenharmony_ci			{
1539e5c31af7Sopenharmony_ci				float token0 = 1.0;
1540e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(OUT(0));
1541e5c31af7Sopenharmony_ci			}
1542e5c31af7Sopenharmony_ci		""
1543e5c31af7Sopenharmony_ci	end
1544e5c31af7Sopenharmony_ci
1545e5c31af7Sopenharmony_ciend # predefined_macros
1546e5c31af7Sopenharmony_ci
1547e5c31af7Sopenharmony_cigroup conditional_inclusion "Conditional Inclusion Tests"
1548e5c31af7Sopenharmony_ci
1549e5c31af7Sopenharmony_ci	case basic_1
1550e5c31af7Sopenharmony_ci		version 300 es
1551e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1552e5c31af7Sopenharmony_ci		both ""
1553e5c31af7Sopenharmony_ci			#version 300 es
1554e5c31af7Sopenharmony_ci			precision mediump float;
1555e5c31af7Sopenharmony_ci			${DECLARATIONS}
1556e5c31af7Sopenharmony_ci			void main()
1557e5c31af7Sopenharmony_ci			{
1558e5c31af7Sopenharmony_ci	#define AAA asdf
1559e5c31af7Sopenharmony_ci
1560e5c31af7Sopenharmony_ci	#if defined AAA && !defined(BBB)
1561e5c31af7Sopenharmony_ci				out0 = 1.0;
1562e5c31af7Sopenharmony_ci	#else
1563e5c31af7Sopenharmony_ci				out0 = 0.0;
1564e5c31af7Sopenharmony_ci	#endif
1565e5c31af7Sopenharmony_ci				${OUTPUT}
1566e5c31af7Sopenharmony_ci			}
1567e5c31af7Sopenharmony_ci		""
1568e5c31af7Sopenharmony_ci	end
1569e5c31af7Sopenharmony_ci
1570e5c31af7Sopenharmony_ci	case basic_2
1571e5c31af7Sopenharmony_ci		version 300 es
1572e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1573e5c31af7Sopenharmony_ci		both ""
1574e5c31af7Sopenharmony_ci			#version 300 es
1575e5c31af7Sopenharmony_ci			precision mediump float;
1576e5c31af7Sopenharmony_ci			${DECLARATIONS}
1577e5c31af7Sopenharmony_ci			void main()
1578e5c31af7Sopenharmony_ci			{
1579e5c31af7Sopenharmony_ci	#define AAA defined(BBB)
1580e5c31af7Sopenharmony_ci
1581e5c31af7Sopenharmony_ci	#if !AAA
1582e5c31af7Sopenharmony_ci				out0 = 1.0;
1583e5c31af7Sopenharmony_ci	#else
1584e5c31af7Sopenharmony_ci				out0 = 0.0;
1585e5c31af7Sopenharmony_ci	#endif
1586e5c31af7Sopenharmony_ci				${OUTPUT}
1587e5c31af7Sopenharmony_ci			}
1588e5c31af7Sopenharmony_ci		""
1589e5c31af7Sopenharmony_ci	end
1590e5c31af7Sopenharmony_ci
1591e5c31af7Sopenharmony_ci	case basic_3
1592e5c31af7Sopenharmony_ci		version 300 es
1593e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1594e5c31af7Sopenharmony_ci		both ""
1595e5c31af7Sopenharmony_ci			#version 300 es
1596e5c31af7Sopenharmony_ci			precision mediump float;
1597e5c31af7Sopenharmony_ci			${DECLARATIONS}
1598e5c31af7Sopenharmony_ci			void main()
1599e5c31af7Sopenharmony_ci			{
1600e5c31af7Sopenharmony_ci	#if 0
1601e5c31af7Sopenharmony_ci				out0 = -1.0;
1602e5c31af7Sopenharmony_ci	#elif 0
1603e5c31af7Sopenharmony_ci				out0 = -2.0;
1604e5c31af7Sopenharmony_ci	#elif 1
1605e5c31af7Sopenharmony_ci				out0 = 1.0;
1606e5c31af7Sopenharmony_ci	#else
1607e5c31af7Sopenharmony_ci				out0 = -3.0;
1608e5c31af7Sopenharmony_ci	#endif
1609e5c31af7Sopenharmony_ci				${OUTPUT}
1610e5c31af7Sopenharmony_ci			}
1611e5c31af7Sopenharmony_ci		""
1612e5c31af7Sopenharmony_ci	end
1613e5c31af7Sopenharmony_ci
1614e5c31af7Sopenharmony_ci	case basic_4
1615e5c31af7Sopenharmony_ci		version 300 es
1616e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1617e5c31af7Sopenharmony_ci		both ""
1618e5c31af7Sopenharmony_ci			#version 300 es
1619e5c31af7Sopenharmony_ci			precision mediump float;
1620e5c31af7Sopenharmony_ci			${DECLARATIONS}
1621e5c31af7Sopenharmony_ci			void main()
1622e5c31af7Sopenharmony_ci			{
1623e5c31af7Sopenharmony_ci	#if 0
1624e5c31af7Sopenharmony_ci				out0 = -1.0;
1625e5c31af7Sopenharmony_ci	#elif 0
1626e5c31af7Sopenharmony_ci				out0 = -2.0;
1627e5c31af7Sopenharmony_ci	#else
1628e5c31af7Sopenharmony_ci				out0 = 1.0;
1629e5c31af7Sopenharmony_ci	#endif
1630e5c31af7Sopenharmony_ci				${OUTPUT}
1631e5c31af7Sopenharmony_ci			}
1632e5c31af7Sopenharmony_ci		""
1633e5c31af7Sopenharmony_ci	end
1634e5c31af7Sopenharmony_ci
1635e5c31af7Sopenharmony_ci	case basic_5
1636e5c31af7Sopenharmony_ci		version 300 es
1637e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1638e5c31af7Sopenharmony_ci		both ""
1639e5c31af7Sopenharmony_ci			#version 300 es
1640e5c31af7Sopenharmony_ci			precision mediump float;
1641e5c31af7Sopenharmony_ci			${DECLARATIONS}
1642e5c31af7Sopenharmony_ci			void main()
1643e5c31af7Sopenharmony_ci			{
1644e5c31af7Sopenharmony_ci	#if 1
1645e5c31af7Sopenharmony_ci				out0 = 1.0;
1646e5c31af7Sopenharmony_ci	#elif 0
1647e5c31af7Sopenharmony_ci				out0 = -2.0;
1648e5c31af7Sopenharmony_ci	#else
1649e5c31af7Sopenharmony_ci				out0 = -1.0;
1650e5c31af7Sopenharmony_ci	#endif
1651e5c31af7Sopenharmony_ci				${OUTPUT}
1652e5c31af7Sopenharmony_ci			}
1653e5c31af7Sopenharmony_ci		""
1654e5c31af7Sopenharmony_ci	end
1655e5c31af7Sopenharmony_ci
1656e5c31af7Sopenharmony_ci	case expression
1657e5c31af7Sopenharmony_ci		version 300 es
1658e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1659e5c31af7Sopenharmony_ci		both ""
1660e5c31af7Sopenharmony_ci			#version 300 es
1661e5c31af7Sopenharmony_ci			precision mediump float;
1662e5c31af7Sopenharmony_ci			${DECLARATIONS}
1663e5c31af7Sopenharmony_ci			void main()
1664e5c31af7Sopenharmony_ci			{
1665e5c31af7Sopenharmony_ci	#if !((~2 >> 1) & 1)
1666e5c31af7Sopenharmony_ci				out0 = 1.0;
1667e5c31af7Sopenharmony_ci	#else
1668e5c31af7Sopenharmony_ci				out0 = -1.0;
1669e5c31af7Sopenharmony_ci	#endif
1670e5c31af7Sopenharmony_ci				${OUTPUT}
1671e5c31af7Sopenharmony_ci			}
1672e5c31af7Sopenharmony_ci		""
1673e5c31af7Sopenharmony_ci	end
1674e5c31af7Sopenharmony_ci
1675e5c31af7Sopenharmony_ciend # conditional_inclusion
1676e5c31af7Sopenharmony_ci
1677e5c31af7Sopenharmony_cigroup invalid_ops "Invalid Operations Tests"
1678e5c31af7Sopenharmony_ci
1679e5c31af7Sopenharmony_ci	case invalid_op_1
1680e5c31af7Sopenharmony_ci		version 300 es
1681e5c31af7Sopenharmony_ci		expect compile_fail
1682e5c31af7Sopenharmony_ci		both ""
1683e5c31af7Sopenharmony_ci			#version 300 es
1684e5c31af7Sopenharmony_ci			precision mediump float;
1685e5c31af7Sopenharmony_ci			${DECLARATIONS}
1686e5c31af7Sopenharmony_ci			void main()
1687e5c31af7Sopenharmony_ci			{
1688e5c31af7Sopenharmony_ci	#if !((~(+ ++1 - - - -1) >> 1) & 1)
1689e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1690e5c31af7Sopenharmony_ci	#else
1691e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1692e5c31af7Sopenharmony_ci	#endif
1693e5c31af7Sopenharmony_ci			}
1694e5c31af7Sopenharmony_ci		""
1695e5c31af7Sopenharmony_ci	end
1696e5c31af7Sopenharmony_ci
1697e5c31af7Sopenharmony_ci	case invalid_op_2
1698e5c31af7Sopenharmony_ci		version 300 es
1699e5c31af7Sopenharmony_ci		expect compile_fail
1700e5c31af7Sopenharmony_ci		both ""
1701e5c31af7Sopenharmony_ci			#version 300 es
1702e5c31af7Sopenharmony_ci			precision mediump float;
1703e5c31af7Sopenharmony_ci			${DECLARATIONS}
1704e5c31af7Sopenharmony_ci			void main()
1705e5c31af7Sopenharmony_ci			{
1706e5c31af7Sopenharmony_ci	#if !((~(+ + +1 - -- -1) >> 1) & 1)
1707e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1708e5c31af7Sopenharmony_ci	#else
1709e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1710e5c31af7Sopenharmony_ci	#endif
1711e5c31af7Sopenharmony_ci			}
1712e5c31af7Sopenharmony_ci		""
1713e5c31af7Sopenharmony_ci	end
1714e5c31af7Sopenharmony_ci
1715e5c31af7Sopenharmony_ci	case invalid_defined_expected_identifier_1
1716e5c31af7Sopenharmony_ci		version 300 es
1717e5c31af7Sopenharmony_ci		expect compile_fail
1718e5c31af7Sopenharmony_ci		both ""
1719e5c31af7Sopenharmony_ci			#version 300 es
1720e5c31af7Sopenharmony_ci			precision mediump float;
1721e5c31af7Sopenharmony_ci			#define AAA 1
1722e5c31af7Sopenharmony_ci
1723e5c31af7Sopenharmony_ci			${DECLARATIONS}
1724e5c31af7Sopenharmony_ci			void main()
1725e5c31af7Sopenharmony_ci			{
1726e5c31af7Sopenharmony_ci	#if defined
1727e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1728e5c31af7Sopenharmony_ci	#endif
1729e5c31af7Sopenharmony_ci			}
1730e5c31af7Sopenharmony_ci		""
1731e5c31af7Sopenharmony_ci	end
1732e5c31af7Sopenharmony_ci
1733e5c31af7Sopenharmony_ci	case invalid_defined_expected_identifier_2
1734e5c31af7Sopenharmony_ci		version 300 es
1735e5c31af7Sopenharmony_ci		expect compile_fail
1736e5c31af7Sopenharmony_ci		both ""
1737e5c31af7Sopenharmony_ci			#version 300 es
1738e5c31af7Sopenharmony_ci			precision mediump float;
1739e5c31af7Sopenharmony_ci			#define AAA 1
1740e5c31af7Sopenharmony_ci
1741e5c31af7Sopenharmony_ci			${DECLARATIONS}
1742e5c31af7Sopenharmony_ci			void main()
1743e5c31af7Sopenharmony_ci			{
1744e5c31af7Sopenharmony_ci	#if defined()
1745e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1746e5c31af7Sopenharmony_ci	#endif
1747e5c31af7Sopenharmony_ci			}
1748e5c31af7Sopenharmony_ci		""
1749e5c31af7Sopenharmony_ci	end
1750e5c31af7Sopenharmony_ci
1751e5c31af7Sopenharmony_ci	case invalid_defined_expected_identifier_3
1752e5c31af7Sopenharmony_ci		version 300 es
1753e5c31af7Sopenharmony_ci		expect compile_fail
1754e5c31af7Sopenharmony_ci		both ""
1755e5c31af7Sopenharmony_ci			#version 300 es
1756e5c31af7Sopenharmony_ci			precision mediump float;
1757e5c31af7Sopenharmony_ci			#define AAA 1
1758e5c31af7Sopenharmony_ci
1759e5c31af7Sopenharmony_ci			${DECLARATIONS}
1760e5c31af7Sopenharmony_ci			void main()
1761e5c31af7Sopenharmony_ci			{
1762e5c31af7Sopenharmony_ci	#if defined(
1763e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1764e5c31af7Sopenharmony_ci	#endif
1765e5c31af7Sopenharmony_ci			}
1766e5c31af7Sopenharmony_ci		""
1767e5c31af7Sopenharmony_ci	end
1768e5c31af7Sopenharmony_ci
1769e5c31af7Sopenharmony_ci	case invalid_defined_expected_identifier_4
1770e5c31af7Sopenharmony_ci		version 300 es
1771e5c31af7Sopenharmony_ci		expect compile_fail
1772e5c31af7Sopenharmony_ci		both ""
1773e5c31af7Sopenharmony_ci			#version 300 es
1774e5c31af7Sopenharmony_ci			precision mediump float;
1775e5c31af7Sopenharmony_ci			#define AAA 1
1776e5c31af7Sopenharmony_ci
1777e5c31af7Sopenharmony_ci			${DECLARATIONS}
1778e5c31af7Sopenharmony_ci			void main()
1779e5c31af7Sopenharmony_ci			{
1780e5c31af7Sopenharmony_ci	#if defined)
1781e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1782e5c31af7Sopenharmony_ci	#endif
1783e5c31af7Sopenharmony_ci			}
1784e5c31af7Sopenharmony_ci		""
1785e5c31af7Sopenharmony_ci	end
1786e5c31af7Sopenharmony_ci
1787e5c31af7Sopenharmony_ci	case invalid_defined_expected_identifier_5
1788e5c31af7Sopenharmony_ci		version 300 es
1789e5c31af7Sopenharmony_ci		expect compile_fail
1790e5c31af7Sopenharmony_ci		both ""
1791e5c31af7Sopenharmony_ci			#version 300 es
1792e5c31af7Sopenharmony_ci			precision mediump float;
1793e5c31af7Sopenharmony_ci			#define AAA 1
1794e5c31af7Sopenharmony_ci
1795e5c31af7Sopenharmony_ci			${DECLARATIONS}
1796e5c31af7Sopenharmony_ci			void main()
1797e5c31af7Sopenharmony_ci			{
1798e5c31af7Sopenharmony_ci	#if defined((AAA))
1799e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
1800e5c31af7Sopenharmony_ci	#endif
1801e5c31af7Sopenharmony_ci			}
1802e5c31af7Sopenharmony_ci		""
1803e5c31af7Sopenharmony_ci	end
1804e5c31af7Sopenharmony_ci
1805e5c31af7Sopenharmony_ci	case invalid_defined_expected_rparen
1806e5c31af7Sopenharmony_ci		version 300 es
1807e5c31af7Sopenharmony_ci		expect compile_fail
1808e5c31af7Sopenharmony_ci		both ""
1809e5c31af7Sopenharmony_ci			#version 300 es
1810e5c31af7Sopenharmony_ci			precision mediump float;
1811e5c31af7Sopenharmony_ci			#define AAA 1
1812e5c31af7Sopenharmony_ci
1813e5c31af7Sopenharmony_ci			${DECLARATIONS}
1814e5c31af7Sopenharmony_ci			void main()
1815e5c31af7Sopenharmony_ci			{
1816e5c31af7Sopenharmony_ci	#if defined(AAA
1817e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1818e5c31af7Sopenharmony_ci	#endif
1819e5c31af7Sopenharmony_ci			}
1820e5c31af7Sopenharmony_ci		""
1821e5c31af7Sopenharmony_ci	end
1822e5c31af7Sopenharmony_ci
1823e5c31af7Sopenharmony_ci	case defined_define
1824e5c31af7Sopenharmony_ci		version 300 es
1825e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1826e5c31af7Sopenharmony_ci		both ""
1827e5c31af7Sopenharmony_ci			#version 300 es
1828e5c31af7Sopenharmony_ci			precision mediump float;
1829e5c31af7Sopenharmony_ci			${DECLARATIONS}
1830e5c31af7Sopenharmony_ci	#define define 1
1831e5c31af7Sopenharmony_ci	#define AAA 1.0
1832e5c31af7Sopenharmony_ci
1833e5c31af7Sopenharmony_ci			void main()
1834e5c31af7Sopenharmony_ci			{
1835e5c31af7Sopenharmony_ci				out0 = AAA;
1836e5c31af7Sopenharmony_ci				${OUTPUT}
1837e5c31af7Sopenharmony_ci			}
1838e5c31af7Sopenharmony_ci		""
1839e5c31af7Sopenharmony_ci	end
1840e5c31af7Sopenharmony_ci
1841e5c31af7Sopenharmony_ciend # invalid_ops
1842e5c31af7Sopenharmony_ci
1843e5c31af7Sopenharmony_cigroup undefined_identifiers "Undefined Identifiers Tests"
1844e5c31af7Sopenharmony_ci
1845e5c31af7Sopenharmony_ci	case valid_undefined_identifier_1
1846e5c31af7Sopenharmony_ci		version 300 es
1847e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1848e5c31af7Sopenharmony_ci		both ""
1849e5c31af7Sopenharmony_ci			#version 300 es
1850e5c31af7Sopenharmony_ci			precision mediump float;
1851e5c31af7Sopenharmony_ci			${DECLARATIONS}
1852e5c31af7Sopenharmony_ci			void main()
1853e5c31af7Sopenharmony_ci			{
1854e5c31af7Sopenharmony_ci	#if 1 || AAA
1855e5c31af7Sopenharmony_ci				out0 = 1.0;
1856e5c31af7Sopenharmony_ci	#else
1857e5c31af7Sopenharmony_ci				out0 = -1.0;
1858e5c31af7Sopenharmony_ci	#endif
1859e5c31af7Sopenharmony_ci				${OUTPUT}
1860e5c31af7Sopenharmony_ci			}
1861e5c31af7Sopenharmony_ci		""
1862e5c31af7Sopenharmony_ci	end
1863e5c31af7Sopenharmony_ci
1864e5c31af7Sopenharmony_ci	case valid_undefined_identifier_2
1865e5c31af7Sopenharmony_ci		version 300 es
1866e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
1867e5c31af7Sopenharmony_ci		both ""
1868e5c31af7Sopenharmony_ci			#version 300 es
1869e5c31af7Sopenharmony_ci			precision mediump float;
1870e5c31af7Sopenharmony_ci			${DECLARATIONS}
1871e5c31af7Sopenharmony_ci			void main()
1872e5c31af7Sopenharmony_ci			{
1873e5c31af7Sopenharmony_ci	#if 0 && AAA
1874e5c31af7Sopenharmony_ci				out0 = -1.0;
1875e5c31af7Sopenharmony_ci	#else
1876e5c31af7Sopenharmony_ci				out0 = 1.0;
1877e5c31af7Sopenharmony_ci	#endif
1878e5c31af7Sopenharmony_ci				${OUTPUT}
1879e5c31af7Sopenharmony_ci			}
1880e5c31af7Sopenharmony_ci		""
1881e5c31af7Sopenharmony_ci	end
1882e5c31af7Sopenharmony_ci
1883e5c31af7Sopenharmony_ci	case undefined_identifier_1
1884e5c31af7Sopenharmony_ci		version 300 es
1885e5c31af7Sopenharmony_ci		expect compile_fail
1886e5c31af7Sopenharmony_ci		both ""
1887e5c31af7Sopenharmony_ci			#version 300 es
1888e5c31af7Sopenharmony_ci			precision mediump float;
1889e5c31af7Sopenharmony_ci			${DECLARATIONS}
1890e5c31af7Sopenharmony_ci			void main()
1891e5c31af7Sopenharmony_ci			{
1892e5c31af7Sopenharmony_ci	#if 1 - CCC + (-AAA || BBB)
1893e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1894e5c31af7Sopenharmony_ci	#else
1895e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1896e5c31af7Sopenharmony_ci	#endif
1897e5c31af7Sopenharmony_ci			}
1898e5c31af7Sopenharmony_ci		""
1899e5c31af7Sopenharmony_ci	end
1900e5c31af7Sopenharmony_ci
1901e5c31af7Sopenharmony_ci	case undefined_identifier_2
1902e5c31af7Sopenharmony_ci		version 300 es
1903e5c31af7Sopenharmony_ci		expect compile_fail
1904e5c31af7Sopenharmony_ci		both ""
1905e5c31af7Sopenharmony_ci			#version 300 es
1906e5c31af7Sopenharmony_ci			precision mediump float;
1907e5c31af7Sopenharmony_ci			${DECLARATIONS}
1908e5c31af7Sopenharmony_ci			void main()
1909e5c31af7Sopenharmony_ci			{
1910e5c31af7Sopenharmony_ci	#if !A
1911e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1912e5c31af7Sopenharmony_ci	#else
1913e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1914e5c31af7Sopenharmony_ci	#endif
1915e5c31af7Sopenharmony_ci			}
1916e5c31af7Sopenharmony_ci		""
1917e5c31af7Sopenharmony_ci	end
1918e5c31af7Sopenharmony_ci
1919e5c31af7Sopenharmony_ci	case undefined_identifier_3
1920e5c31af7Sopenharmony_ci		version 300 es
1921e5c31af7Sopenharmony_ci		expect compile_fail
1922e5c31af7Sopenharmony_ci		both ""
1923e5c31af7Sopenharmony_ci			#version 300 es
1924e5c31af7Sopenharmony_ci			precision mediump float;
1925e5c31af7Sopenharmony_ci			${DECLARATIONS}
1926e5c31af7Sopenharmony_ci			void main()
1927e5c31af7Sopenharmony_ci			{
1928e5c31af7Sopenharmony_ci	#if -A
1929e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1930e5c31af7Sopenharmony_ci	#else
1931e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1932e5c31af7Sopenharmony_ci	#endif
1933e5c31af7Sopenharmony_ci			}
1934e5c31af7Sopenharmony_ci		""
1935e5c31af7Sopenharmony_ci	end
1936e5c31af7Sopenharmony_ci
1937e5c31af7Sopenharmony_ci	case undefined_identifier_4
1938e5c31af7Sopenharmony_ci		version 300 es
1939e5c31af7Sopenharmony_ci		expect compile_fail
1940e5c31af7Sopenharmony_ci		both ""
1941e5c31af7Sopenharmony_ci			#version 300 es
1942e5c31af7Sopenharmony_ci			precision mediump float;
1943e5c31af7Sopenharmony_ci			${DECLARATIONS}
1944e5c31af7Sopenharmony_ci			void main()
1945e5c31af7Sopenharmony_ci			{
1946e5c31af7Sopenharmony_ci	#if ~A
1947e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1948e5c31af7Sopenharmony_ci	#else
1949e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1950e5c31af7Sopenharmony_ci	#endif
1951e5c31af7Sopenharmony_ci			}
1952e5c31af7Sopenharmony_ci		""
1953e5c31af7Sopenharmony_ci	end
1954e5c31af7Sopenharmony_ci
1955e5c31af7Sopenharmony_ci	case undefined_identifier_5
1956e5c31af7Sopenharmony_ci		version 300 es
1957e5c31af7Sopenharmony_ci		expect compile_fail
1958e5c31af7Sopenharmony_ci		both ""
1959e5c31af7Sopenharmony_ci			#version 300 es
1960e5c31af7Sopenharmony_ci			precision mediump float;
1961e5c31af7Sopenharmony_ci			${DECLARATIONS}
1962e5c31af7Sopenharmony_ci			void main()
1963e5c31af7Sopenharmony_ci			{
1964e5c31af7Sopenharmony_ci	#if A && B
1965e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1966e5c31af7Sopenharmony_ci	#else
1967e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1968e5c31af7Sopenharmony_ci	#endif
1969e5c31af7Sopenharmony_ci			}
1970e5c31af7Sopenharmony_ci		""
1971e5c31af7Sopenharmony_ci	end
1972e5c31af7Sopenharmony_ci
1973e5c31af7Sopenharmony_ci	case undefined_identifier_6
1974e5c31af7Sopenharmony_ci		version 300 es
1975e5c31af7Sopenharmony_ci		expect compile_fail
1976e5c31af7Sopenharmony_ci		both ""
1977e5c31af7Sopenharmony_ci			#version 300 es
1978e5c31af7Sopenharmony_ci			precision mediump float;
1979e5c31af7Sopenharmony_ci			${DECLARATIONS}
1980e5c31af7Sopenharmony_ci			void main()
1981e5c31af7Sopenharmony_ci			{
1982e5c31af7Sopenharmony_ci    #define A 1
1983e5c31af7Sopenharmony_ci	#if A && B
1984e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
1985e5c31af7Sopenharmony_ci	#else
1986e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
1987e5c31af7Sopenharmony_ci	#endif
1988e5c31af7Sopenharmony_ci			}
1989e5c31af7Sopenharmony_ci		""
1990e5c31af7Sopenharmony_ci	end
1991e5c31af7Sopenharmony_ci
1992e5c31af7Sopenharmony_ci	case undefined_identifier_7
1993e5c31af7Sopenharmony_ci		version 300 es
1994e5c31af7Sopenharmony_ci		expect compile_fail
1995e5c31af7Sopenharmony_ci		both ""
1996e5c31af7Sopenharmony_ci			#version 300 es
1997e5c31af7Sopenharmony_ci			precision mediump float;
1998e5c31af7Sopenharmony_ci			${DECLARATIONS}
1999e5c31af7Sopenharmony_ci			void main()
2000e5c31af7Sopenharmony_ci			{
2001e5c31af7Sopenharmony_ci    #define B 1
2002e5c31af7Sopenharmony_ci	#if A && B
2003e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2004e5c31af7Sopenharmony_ci	#else
2005e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2006e5c31af7Sopenharmony_ci	#endif
2007e5c31af7Sopenharmony_ci			}
2008e5c31af7Sopenharmony_ci		""
2009e5c31af7Sopenharmony_ci	end
2010e5c31af7Sopenharmony_ci
2011e5c31af7Sopenharmony_ci	case undefined_identifier_8
2012e5c31af7Sopenharmony_ci		version 300 es
2013e5c31af7Sopenharmony_ci		expect compile_fail
2014e5c31af7Sopenharmony_ci		both ""
2015e5c31af7Sopenharmony_ci			#version 300 es
2016e5c31af7Sopenharmony_ci			precision mediump float;
2017e5c31af7Sopenharmony_ci			${DECLARATIONS}
2018e5c31af7Sopenharmony_ci			void main()
2019e5c31af7Sopenharmony_ci			{
2020e5c31af7Sopenharmony_ci    #define B 1
2021e5c31af7Sopenharmony_ci	#define A 2
2022e5c31af7Sopenharmony_ci	#undef A
2023e5c31af7Sopenharmony_ci	#if A && B
2024e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2025e5c31af7Sopenharmony_ci	#else
2026e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2027e5c31af7Sopenharmony_ci	#endif
2028e5c31af7Sopenharmony_ci			}
2029e5c31af7Sopenharmony_ci		""
2030e5c31af7Sopenharmony_ci	end
2031e5c31af7Sopenharmony_ci
2032e5c31af7Sopenharmony_ci	case undefined_identifier_9
2033e5c31af7Sopenharmony_ci		version 300 es
2034e5c31af7Sopenharmony_ci		expect compile_fail
2035e5c31af7Sopenharmony_ci		both ""
2036e5c31af7Sopenharmony_ci			#version 300 es
2037e5c31af7Sopenharmony_ci			precision mediump float;
2038e5c31af7Sopenharmony_ci			${DECLARATIONS}
2039e5c31af7Sopenharmony_ci			void main()
2040e5c31af7Sopenharmony_ci			{
2041e5c31af7Sopenharmony_ci	#if A || B
2042e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2043e5c31af7Sopenharmony_ci	#else
2044e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2045e5c31af7Sopenharmony_ci	#endif
2046e5c31af7Sopenharmony_ci			}
2047e5c31af7Sopenharmony_ci		""
2048e5c31af7Sopenharmony_ci	end
2049e5c31af7Sopenharmony_ci
2050e5c31af7Sopenharmony_ci	case undefined_identifier_10
2051e5c31af7Sopenharmony_ci		version 300 es
2052e5c31af7Sopenharmony_ci		expect compile_fail
2053e5c31af7Sopenharmony_ci		both ""
2054e5c31af7Sopenharmony_ci			#version 300 es
2055e5c31af7Sopenharmony_ci			precision mediump float;
2056e5c31af7Sopenharmony_ci			${DECLARATIONS}
2057e5c31af7Sopenharmony_ci			void main()
2058e5c31af7Sopenharmony_ci			{
2059e5c31af7Sopenharmony_ci    #define A 0
2060e5c31af7Sopenharmony_ci	#if A || B
2061e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2062e5c31af7Sopenharmony_ci	#else
2063e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2064e5c31af7Sopenharmony_ci	#endif
2065e5c31af7Sopenharmony_ci			}
2066e5c31af7Sopenharmony_ci		""
2067e5c31af7Sopenharmony_ci	end
2068e5c31af7Sopenharmony_ci
2069e5c31af7Sopenharmony_ci	case undefined_identifier_11
2070e5c31af7Sopenharmony_ci		version 300 es
2071e5c31af7Sopenharmony_ci		expect compile_fail
2072e5c31af7Sopenharmony_ci		both ""
2073e5c31af7Sopenharmony_ci			#version 300 es
2074e5c31af7Sopenharmony_ci			precision mediump float;
2075e5c31af7Sopenharmony_ci			${DECLARATIONS}
2076e5c31af7Sopenharmony_ci			void main()
2077e5c31af7Sopenharmony_ci			{
2078e5c31af7Sopenharmony_ci    #define A 0
2079e5c31af7Sopenharmony_ci	#define B 2
2080e5c31af7Sopenharmony_ci	#undef B
2081e5c31af7Sopenharmony_ci	#if A || B
2082e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2083e5c31af7Sopenharmony_ci	#else
2084e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2085e5c31af7Sopenharmony_ci	#endif
2086e5c31af7Sopenharmony_ci			}
2087e5c31af7Sopenharmony_ci		""
2088e5c31af7Sopenharmony_ci	end
2089e5c31af7Sopenharmony_ci
2090e5c31af7Sopenharmony_ci	case undefined_identifier_12
2091e5c31af7Sopenharmony_ci		version 300 es
2092e5c31af7Sopenharmony_ci		expect compile_fail
2093e5c31af7Sopenharmony_ci		both ""
2094e5c31af7Sopenharmony_ci			#version 300 es
2095e5c31af7Sopenharmony_ci			precision mediump float;
2096e5c31af7Sopenharmony_ci			${DECLARATIONS}
2097e5c31af7Sopenharmony_ci			void main()
2098e5c31af7Sopenharmony_ci			{
2099e5c31af7Sopenharmony_ci    #define B 1
2100e5c31af7Sopenharmony_ci	#if A || B
2101e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2102e5c31af7Sopenharmony_ci	#else
2103e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2104e5c31af7Sopenharmony_ci	#endif
2105e5c31af7Sopenharmony_ci			}
2106e5c31af7Sopenharmony_ci		""
2107e5c31af7Sopenharmony_ci	end
2108e5c31af7Sopenharmony_ci
2109e5c31af7Sopenharmony_ciend # undefined_identifiers
2110e5c31af7Sopenharmony_ci
2111e5c31af7Sopenharmony_cigroup invalid_conditionals "Invalid Conditionals Tests"
2112e5c31af7Sopenharmony_ci
2113e5c31af7Sopenharmony_ci	case empty_if
2114e5c31af7Sopenharmony_ci		version 300 es
2115e5c31af7Sopenharmony_ci		expect compile_fail
2116e5c31af7Sopenharmony_ci		both ""
2117e5c31af7Sopenharmony_ci			#version 300 es
2118e5c31af7Sopenharmony_ci			precision mediump float;
2119e5c31af7Sopenharmony_ci			${DECLARATIONS}
2120e5c31af7Sopenharmony_ci			void main()
2121e5c31af7Sopenharmony_ci			{
2122e5c31af7Sopenharmony_ci	#if
2123e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2124e5c31af7Sopenharmony_ci			}
2125e5c31af7Sopenharmony_ci		""
2126e5c31af7Sopenharmony_ci	end
2127e5c31af7Sopenharmony_ci
2128e5c31af7Sopenharmony_ci	case empty_ifdef
2129e5c31af7Sopenharmony_ci		version 300 es
2130e5c31af7Sopenharmony_ci		expect compile_fail
2131e5c31af7Sopenharmony_ci		both ""
2132e5c31af7Sopenharmony_ci			#version 300 es
2133e5c31af7Sopenharmony_ci			precision mediump float;
2134e5c31af7Sopenharmony_ci			${DECLARATIONS}
2135e5c31af7Sopenharmony_ci			void main()
2136e5c31af7Sopenharmony_ci			{
2137e5c31af7Sopenharmony_ci	#ifdef
2138e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2139e5c31af7Sopenharmony_ci			}
2140e5c31af7Sopenharmony_ci		""
2141e5c31af7Sopenharmony_ci	end
2142e5c31af7Sopenharmony_ci
2143e5c31af7Sopenharmony_ci	case empty_ifndef
2144e5c31af7Sopenharmony_ci		version 300 es
2145e5c31af7Sopenharmony_ci		expect compile_fail
2146e5c31af7Sopenharmony_ci		both ""
2147e5c31af7Sopenharmony_ci			#version 300 es
2148e5c31af7Sopenharmony_ci			precision mediump float;
2149e5c31af7Sopenharmony_ci			${DECLARATIONS}
2150e5c31af7Sopenharmony_ci			void main()
2151e5c31af7Sopenharmony_ci			{
2152e5c31af7Sopenharmony_ci	#ifndef
2153e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2154e5c31af7Sopenharmony_ci			}
2155e5c31af7Sopenharmony_ci		""
2156e5c31af7Sopenharmony_ci	end
2157e5c31af7Sopenharmony_ci
2158e5c31af7Sopenharmony_ci	case invalid_ifdef
2159e5c31af7Sopenharmony_ci		version 300 es
2160e5c31af7Sopenharmony_ci		expect compile_fail
2161e5c31af7Sopenharmony_ci		both ""
2162e5c31af7Sopenharmony_ci			#version 300 es
2163e5c31af7Sopenharmony_ci			precision mediump float;
2164e5c31af7Sopenharmony_ci			${DECLARATIONS}
2165e5c31af7Sopenharmony_ci			void main()
2166e5c31af7Sopenharmony_ci			{
2167e5c31af7Sopenharmony_ci	#ifdef 1
2168e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2169e5c31af7Sopenharmony_ci	#endif
2170e5c31af7Sopenharmony_ci			}
2171e5c31af7Sopenharmony_ci		""
2172e5c31af7Sopenharmony_ci	end
2173e5c31af7Sopenharmony_ci
2174e5c31af7Sopenharmony_ci	case invalid_ifndef
2175e5c31af7Sopenharmony_ci		version 300 es
2176e5c31af7Sopenharmony_ci		expect compile_fail
2177e5c31af7Sopenharmony_ci		both ""
2178e5c31af7Sopenharmony_ci			#version 300 es
2179e5c31af7Sopenharmony_ci			precision mediump float;
2180e5c31af7Sopenharmony_ci			${DECLARATIONS}
2181e5c31af7Sopenharmony_ci			void main()
2182e5c31af7Sopenharmony_ci			{
2183e5c31af7Sopenharmony_ci	#ifndef 1
2184e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2185e5c31af7Sopenharmony_ci	#endif
2186e5c31af7Sopenharmony_ci			}
2187e5c31af7Sopenharmony_ci		""
2188e5c31af7Sopenharmony_ci	end
2189e5c31af7Sopenharmony_ci
2190e5c31af7Sopenharmony_ci	case empty_if_defined
2191e5c31af7Sopenharmony_ci		version 300 es
2192e5c31af7Sopenharmony_ci		expect compile_fail
2193e5c31af7Sopenharmony_ci		both ""
2194e5c31af7Sopenharmony_ci			#version 300 es
2195e5c31af7Sopenharmony_ci			precision mediump float;
2196e5c31af7Sopenharmony_ci			${DECLARATIONS}
2197e5c31af7Sopenharmony_ci			void main()
2198e5c31af7Sopenharmony_ci			{
2199e5c31af7Sopenharmony_ci	#if defined
2200e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2201e5c31af7Sopenharmony_ci			}
2202e5c31af7Sopenharmony_ci		""
2203e5c31af7Sopenharmony_ci	end
2204e5c31af7Sopenharmony_ci
2205e5c31af7Sopenharmony_ci	case unterminated_if_1
2206e5c31af7Sopenharmony_ci		version 300 es
2207e5c31af7Sopenharmony_ci		expect compile_fail
2208e5c31af7Sopenharmony_ci		both ""
2209e5c31af7Sopenharmony_ci			#version 300 es
2210e5c31af7Sopenharmony_ci			precision mediump float;
2211e5c31af7Sopenharmony_ci			${DECLARATIONS}
2212e5c31af7Sopenharmony_ci			void main()
2213e5c31af7Sopenharmony_ci			{
2214e5c31af7Sopenharmony_ci	#if 1
2215e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2216e5c31af7Sopenharmony_ci			}
2217e5c31af7Sopenharmony_ci		""
2218e5c31af7Sopenharmony_ci	end
2219e5c31af7Sopenharmony_ci
2220e5c31af7Sopenharmony_ci	case unterminated_if_2
2221e5c31af7Sopenharmony_ci		version 300 es
2222e5c31af7Sopenharmony_ci		expect compile_fail
2223e5c31af7Sopenharmony_ci		both ""
2224e5c31af7Sopenharmony_ci			#version 300 es
2225e5c31af7Sopenharmony_ci			precision mediump float;
2226e5c31af7Sopenharmony_ci			${DECLARATIONS}
2227e5c31af7Sopenharmony_ci			void main()
2228e5c31af7Sopenharmony_ci			{
2229e5c31af7Sopenharmony_ci	#if 0
2230e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2231e5c31af7Sopenharmony_ci			}
2232e5c31af7Sopenharmony_ci		""
2233e5c31af7Sopenharmony_ci	end
2234e5c31af7Sopenharmony_ci
2235e5c31af7Sopenharmony_ci	case unterminated_ifdef
2236e5c31af7Sopenharmony_ci		version 300 es
2237e5c31af7Sopenharmony_ci		expect compile_fail
2238e5c31af7Sopenharmony_ci		both ""
2239e5c31af7Sopenharmony_ci			#version 300 es
2240e5c31af7Sopenharmony_ci			precision mediump float;
2241e5c31af7Sopenharmony_ci			${DECLARATIONS}
2242e5c31af7Sopenharmony_ci			void main()
2243e5c31af7Sopenharmony_ci			{
2244e5c31af7Sopenharmony_ci	#ifdef FOOBAR
2245e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2246e5c31af7Sopenharmony_ci			}
2247e5c31af7Sopenharmony_ci		""
2248e5c31af7Sopenharmony_ci	end
2249e5c31af7Sopenharmony_ci
2250e5c31af7Sopenharmony_ci	case unterminated_ifndef
2251e5c31af7Sopenharmony_ci		version 300 es
2252e5c31af7Sopenharmony_ci		expect compile_fail
2253e5c31af7Sopenharmony_ci		both ""
2254e5c31af7Sopenharmony_ci			#version 300 es
2255e5c31af7Sopenharmony_ci			precision mediump float;
2256e5c31af7Sopenharmony_ci			${DECLARATIONS}
2257e5c31af7Sopenharmony_ci			void main()
2258e5c31af7Sopenharmony_ci			{
2259e5c31af7Sopenharmony_ci	#ifndef GL_ES
2260e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2261e5c31af7Sopenharmony_ci			}
2262e5c31af7Sopenharmony_ci		""
2263e5c31af7Sopenharmony_ci	end
2264e5c31af7Sopenharmony_ci
2265e5c31af7Sopenharmony_ci	case unterminated_else_1
2266e5c31af7Sopenharmony_ci		version 300 es
2267e5c31af7Sopenharmony_ci		expect compile_fail
2268e5c31af7Sopenharmony_ci		both ""
2269e5c31af7Sopenharmony_ci			#version 300 es
2270e5c31af7Sopenharmony_ci			precision mediump float;
2271e5c31af7Sopenharmony_ci			${DECLARATIONS}
2272e5c31af7Sopenharmony_ci			void main()
2273e5c31af7Sopenharmony_ci			{
2274e5c31af7Sopenharmony_ci	#if 1
2275e5c31af7Sopenharmony_ci	#else
2276e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2277e5c31af7Sopenharmony_ci			}
2278e5c31af7Sopenharmony_ci		""
2279e5c31af7Sopenharmony_ci	end
2280e5c31af7Sopenharmony_ci
2281e5c31af7Sopenharmony_ci	case unterminated_else_2
2282e5c31af7Sopenharmony_ci		version 300 es
2283e5c31af7Sopenharmony_ci		expect compile_fail
2284e5c31af7Sopenharmony_ci		both ""
2285e5c31af7Sopenharmony_ci			#version 300 es
2286e5c31af7Sopenharmony_ci			precision mediump float;
2287e5c31af7Sopenharmony_ci			${DECLARATIONS}
2288e5c31af7Sopenharmony_ci			void main()
2289e5c31af7Sopenharmony_ci			{
2290e5c31af7Sopenharmony_ci	#if 0
2291e5c31af7Sopenharmony_ci	#else
2292e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2293e5c31af7Sopenharmony_ci			}
2294e5c31af7Sopenharmony_ci		""
2295e5c31af7Sopenharmony_ci	end
2296e5c31af7Sopenharmony_ci
2297e5c31af7Sopenharmony_ci	case unterminated_elif_1
2298e5c31af7Sopenharmony_ci		version 300 es
2299e5c31af7Sopenharmony_ci		expect compile_fail
2300e5c31af7Sopenharmony_ci		both ""
2301e5c31af7Sopenharmony_ci			#version 300 es
2302e5c31af7Sopenharmony_ci			precision mediump float;
2303e5c31af7Sopenharmony_ci			${DECLARATIONS}
2304e5c31af7Sopenharmony_ci			void main()
2305e5c31af7Sopenharmony_ci			{
2306e5c31af7Sopenharmony_ci	#if 0
2307e5c31af7Sopenharmony_ci	#elif 1
2308e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2309e5c31af7Sopenharmony_ci			}
2310e5c31af7Sopenharmony_ci		""
2311e5c31af7Sopenharmony_ci	end
2312e5c31af7Sopenharmony_ci
2313e5c31af7Sopenharmony_ci	case unterminated_elif_2
2314e5c31af7Sopenharmony_ci		version 300 es
2315e5c31af7Sopenharmony_ci		expect compile_fail
2316e5c31af7Sopenharmony_ci		both ""
2317e5c31af7Sopenharmony_ci			#version 300 es
2318e5c31af7Sopenharmony_ci			precision mediump float;
2319e5c31af7Sopenharmony_ci			${DECLARATIONS}
2320e5c31af7Sopenharmony_ci			void main()
2321e5c31af7Sopenharmony_ci			{
2322e5c31af7Sopenharmony_ci	#if 1
2323e5c31af7Sopenharmony_ci	#elif 0
2324e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2325e5c31af7Sopenharmony_ci			}
2326e5c31af7Sopenharmony_ci		""
2327e5c31af7Sopenharmony_ci	end
2328e5c31af7Sopenharmony_ci
2329e5c31af7Sopenharmony_ci	case unterminated_elif_3
2330e5c31af7Sopenharmony_ci		version 300 es
2331e5c31af7Sopenharmony_ci		expect compile_fail
2332e5c31af7Sopenharmony_ci		both ""
2333e5c31af7Sopenharmony_ci			#version 300 es
2334e5c31af7Sopenharmony_ci			precision mediump float;
2335e5c31af7Sopenharmony_ci			${DECLARATIONS}
2336e5c31af7Sopenharmony_ci			void main()
2337e5c31af7Sopenharmony_ci			{
2338e5c31af7Sopenharmony_ci	#if 0
2339e5c31af7Sopenharmony_ci	#elif 0
2340e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(2.0);
2341e5c31af7Sopenharmony_ci			}
2342e5c31af7Sopenharmony_ci		""
2343e5c31af7Sopenharmony_ci	end
2344e5c31af7Sopenharmony_ci
2345e5c31af7Sopenharmony_ci	case elif_after_else
2346e5c31af7Sopenharmony_ci		version 300 es
2347e5c31af7Sopenharmony_ci		expect compile_fail
2348e5c31af7Sopenharmony_ci		both ""
2349e5c31af7Sopenharmony_ci			#version 300 es
2350e5c31af7Sopenharmony_ci			precision mediump float;
2351e5c31af7Sopenharmony_ci			${DECLARATIONS}
2352e5c31af7Sopenharmony_ci			void main()
2353e5c31af7Sopenharmony_ci			{
2354e5c31af7Sopenharmony_ci	#if 0
2355e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2356e5c31af7Sopenharmony_ci	#else
2357e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(-1.0);
2358e5c31af7Sopenharmony_ci	#elif 1
2359e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(0.0);
2360e5c31af7Sopenharmony_ci	#endif
2361e5c31af7Sopenharmony_ci			}
2362e5c31af7Sopenharmony_ci		""
2363e5c31af7Sopenharmony_ci	end
2364e5c31af7Sopenharmony_ci
2365e5c31af7Sopenharmony_ci	case else_without_if
2366e5c31af7Sopenharmony_ci		version 300 es
2367e5c31af7Sopenharmony_ci		expect compile_fail
2368e5c31af7Sopenharmony_ci		both ""
2369e5c31af7Sopenharmony_ci			#version 300 es
2370e5c31af7Sopenharmony_ci			precision mediump float;
2371e5c31af7Sopenharmony_ci			${DECLARATIONS}
2372e5c31af7Sopenharmony_ci			void main()
2373e5c31af7Sopenharmony_ci			{
2374e5c31af7Sopenharmony_ci	#else
2375e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2376e5c31af7Sopenharmony_ci	#endif
2377e5c31af7Sopenharmony_ci			}
2378e5c31af7Sopenharmony_ci		""
2379e5c31af7Sopenharmony_ci	end
2380e5c31af7Sopenharmony_ci
2381e5c31af7Sopenharmony_ci	case elif_without_if
2382e5c31af7Sopenharmony_ci		version 300 es
2383e5c31af7Sopenharmony_ci		expect compile_fail
2384e5c31af7Sopenharmony_ci		both ""
2385e5c31af7Sopenharmony_ci			#version 300 es
2386e5c31af7Sopenharmony_ci			precision mediump float;
2387e5c31af7Sopenharmony_ci			${DECLARATIONS}
2388e5c31af7Sopenharmony_ci			void main()
2389e5c31af7Sopenharmony_ci			{
2390e5c31af7Sopenharmony_ci	#elif 1
2391e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2392e5c31af7Sopenharmony_ci	#endif
2393e5c31af7Sopenharmony_ci			}
2394e5c31af7Sopenharmony_ci		""
2395e5c31af7Sopenharmony_ci	end
2396e5c31af7Sopenharmony_ci
2397e5c31af7Sopenharmony_ci	case endif_without_if
2398e5c31af7Sopenharmony_ci		version 300 es
2399e5c31af7Sopenharmony_ci		expect compile_fail
2400e5c31af7Sopenharmony_ci		both ""
2401e5c31af7Sopenharmony_ci			#version 300 es
2402e5c31af7Sopenharmony_ci			precision mediump float;
2403e5c31af7Sopenharmony_ci			${DECLARATIONS}
2404e5c31af7Sopenharmony_ci			void main()
2405e5c31af7Sopenharmony_ci			{
2406e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2407e5c31af7Sopenharmony_ci	#endif
2408e5c31af7Sopenharmony_ci			}
2409e5c31af7Sopenharmony_ci		""
2410e5c31af7Sopenharmony_ci	end
2411e5c31af7Sopenharmony_ci
2412e5c31af7Sopenharmony_ci	case else_after_else
2413e5c31af7Sopenharmony_ci		version 300 es
2414e5c31af7Sopenharmony_ci		expect compile_fail
2415e5c31af7Sopenharmony_ci		both ""
2416e5c31af7Sopenharmony_ci			#version 300 es
2417e5c31af7Sopenharmony_ci			precision mediump float;
2418e5c31af7Sopenharmony_ci			${DECLARATIONS}
2419e5c31af7Sopenharmony_ci			void main()
2420e5c31af7Sopenharmony_ci			{
2421e5c31af7Sopenharmony_ci	#if !GL_ES
2422e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(1.0);
2423e5c31af7Sopenharmony_ci	#else
2424e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(-1.0);
2425e5c31af7Sopenharmony_ci	#else
2426e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(-1.0);
2427e5c31af7Sopenharmony_ci	#endif
2428e5c31af7Sopenharmony_ci			}
2429e5c31af7Sopenharmony_ci		""
2430e5c31af7Sopenharmony_ci	end
2431e5c31af7Sopenharmony_ci
2432e5c31af7Sopenharmony_ci	case nested_elif_without_if
2433e5c31af7Sopenharmony_ci		version 300 es
2434e5c31af7Sopenharmony_ci		expect compile_fail
2435e5c31af7Sopenharmony_ci		both ""
2436e5c31af7Sopenharmony_ci			#version 300 es
2437e5c31af7Sopenharmony_ci			precision mediump float;
2438e5c31af7Sopenharmony_ci			${DECLARATIONS}
2439e5c31af7Sopenharmony_ci			void main()
2440e5c31af7Sopenharmony_ci			{
2441e5c31af7Sopenharmony_ci	#if 1
2442e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(1.0);
2443e5c31af7Sopenharmony_ci	#	elif
2444e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(0.0);
2445e5c31af7Sopenharmony_ci	#	endif
2446e5c31af7Sopenharmony_ci	#endif
2447e5c31af7Sopenharmony_ci			}
2448e5c31af7Sopenharmony_ci		""
2449e5c31af7Sopenharmony_ci	end
2450e5c31af7Sopenharmony_ci
2451e5c31af7Sopenharmony_ci	case if_float
2452e5c31af7Sopenharmony_ci		version 300 es
2453e5c31af7Sopenharmony_ci		expect compile_fail
2454e5c31af7Sopenharmony_ci		both ""
2455e5c31af7Sopenharmony_ci			#version 300 es
2456e5c31af7Sopenharmony_ci			precision mediump float;
2457e5c31af7Sopenharmony_ci			${DECLARATIONS}
2458e5c31af7Sopenharmony_ci			void main()
2459e5c31af7Sopenharmony_ci			{
2460e5c31af7Sopenharmony_ci	#if 1.231
2461e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(1.0);
2462e5c31af7Sopenharmony_ci	#	elif
2463e5c31af7Sopenharmony_ci			${POSITION_FRAG_COLOR} = vec4(0.0);
2464e5c31af7Sopenharmony_ci	#	endif
2465e5c31af7Sopenharmony_ci	#endif
2466e5c31af7Sopenharmony_ci			}
2467e5c31af7Sopenharmony_ci		""
2468e5c31af7Sopenharmony_ci	end
2469e5c31af7Sopenharmony_ci
2470e5c31af7Sopenharmony_ci	case tokens_after_if
2471e5c31af7Sopenharmony_ci		version 300 es
2472e5c31af7Sopenharmony_ci		expect compile_fail
2473e5c31af7Sopenharmony_ci		both ""
2474e5c31af7Sopenharmony_ci			#version 300 es
2475e5c31af7Sopenharmony_ci			precision mediump float;
2476e5c31af7Sopenharmony_ci			${DECLARATIONS}
2477e5c31af7Sopenharmony_ci			void main()
2478e5c31af7Sopenharmony_ci			{
2479e5c31af7Sopenharmony_ci	#if 1 foobar
2480e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2481e5c31af7Sopenharmony_ci	#endif
2482e5c31af7Sopenharmony_ci			}
2483e5c31af7Sopenharmony_ci		""
2484e5c31af7Sopenharmony_ci	end
2485e5c31af7Sopenharmony_ci
2486e5c31af7Sopenharmony_ci	case tokens_after_elif
2487e5c31af7Sopenharmony_ci		version 300 es
2488e5c31af7Sopenharmony_ci		expect compile_fail
2489e5c31af7Sopenharmony_ci		both ""
2490e5c31af7Sopenharmony_ci			#version 300 es
2491e5c31af7Sopenharmony_ci			precision mediump float;
2492e5c31af7Sopenharmony_ci			${DECLARATIONS}
2493e5c31af7Sopenharmony_ci			void main()
2494e5c31af7Sopenharmony_ci			{
2495e5c31af7Sopenharmony_ci	#if 0
2496e5c31af7Sopenharmony_ci	#elif foobar
2497e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2498e5c31af7Sopenharmony_ci	#endif
2499e5c31af7Sopenharmony_ci			}
2500e5c31af7Sopenharmony_ci		""
2501e5c31af7Sopenharmony_ci	end
2502e5c31af7Sopenharmony_ci
2503e5c31af7Sopenharmony_ci	case tokens_after_else
2504e5c31af7Sopenharmony_ci		version 300 es
2505e5c31af7Sopenharmony_ci		expect compile_fail
2506e5c31af7Sopenharmony_ci		both ""
2507e5c31af7Sopenharmony_ci			#version 300 es
2508e5c31af7Sopenharmony_ci			precision mediump float;
2509e5c31af7Sopenharmony_ci			${DECLARATIONS}
2510e5c31af7Sopenharmony_ci			void main()
2511e5c31af7Sopenharmony_ci			{
2512e5c31af7Sopenharmony_ci	#if 1
2513e5c31af7Sopenharmony_ci	#else foobar 1.231
2514e5c31af7Sopenharmony_ci	#endif
2515e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2516e5c31af7Sopenharmony_ci			}
2517e5c31af7Sopenharmony_ci		""
2518e5c31af7Sopenharmony_ci	end
2519e5c31af7Sopenharmony_ci
2520e5c31af7Sopenharmony_ci	case tokens_after_endif
2521e5c31af7Sopenharmony_ci		version 300 es
2522e5c31af7Sopenharmony_ci		expect compile_fail
2523e5c31af7Sopenharmony_ci		both ""
2524e5c31af7Sopenharmony_ci			#version 300 es
2525e5c31af7Sopenharmony_ci			precision mediump float;
2526e5c31af7Sopenharmony_ci			${DECLARATIONS}
2527e5c31af7Sopenharmony_ci			void main()
2528e5c31af7Sopenharmony_ci			{
2529e5c31af7Sopenharmony_ci	#if 1
2530e5c31af7Sopenharmony_ci	#else
2531e5c31af7Sopenharmony_ci	#endif foobar
2532e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2533e5c31af7Sopenharmony_ci			}
2534e5c31af7Sopenharmony_ci		""
2535e5c31af7Sopenharmony_ci	end
2536e5c31af7Sopenharmony_ci
2537e5c31af7Sopenharmony_ci	case tokens_after_ifdef
2538e5c31af7Sopenharmony_ci		version 300 es
2539e5c31af7Sopenharmony_ci		expect compile_fail
2540e5c31af7Sopenharmony_ci		both ""
2541e5c31af7Sopenharmony_ci			#version 300 es
2542e5c31af7Sopenharmony_ci			precision mediump float;
2543e5c31af7Sopenharmony_ci			${DECLARATIONS}
2544e5c31af7Sopenharmony_ci			void main()
2545e5c31af7Sopenharmony_ci			{
2546e5c31af7Sopenharmony_ci	#ifdef FOOBAR foobar
2547e5c31af7Sopenharmony_ci	#else
2548e5c31af7Sopenharmony_ci	#endif
2549e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2550e5c31af7Sopenharmony_ci			}
2551e5c31af7Sopenharmony_ci		""
2552e5c31af7Sopenharmony_ci	end
2553e5c31af7Sopenharmony_ci
2554e5c31af7Sopenharmony_ci	case tokens_after_ifndef
2555e5c31af7Sopenharmony_ci		version 300 es
2556e5c31af7Sopenharmony_ci		expect compile_fail
2557e5c31af7Sopenharmony_ci		both ""
2558e5c31af7Sopenharmony_ci			#version 300 es
2559e5c31af7Sopenharmony_ci			precision mediump float;
2560e5c31af7Sopenharmony_ci			${DECLARATIONS}
2561e5c31af7Sopenharmony_ci			void main()
2562e5c31af7Sopenharmony_ci			{
2563e5c31af7Sopenharmony_ci	#ifndef FOOBAR ,, +- << barbar
2564e5c31af7Sopenharmony_ci	#else
2565e5c31af7Sopenharmony_ci	#endif
2566e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2567e5c31af7Sopenharmony_ci			}
2568e5c31af7Sopenharmony_ci		""
2569e5c31af7Sopenharmony_ci	end
2570e5c31af7Sopenharmony_ci
2571e5c31af7Sopenharmony_ci	case unterminated_nested_blocks
2572e5c31af7Sopenharmony_ci		version 300 es
2573e5c31af7Sopenharmony_ci		expect compile_fail
2574e5c31af7Sopenharmony_ci		both ""
2575e5c31af7Sopenharmony_ci			#version 300 es
2576e5c31af7Sopenharmony_ci			precision mediump float;
2577e5c31af7Sopenharmony_ci			${DECLARATIONS}
2578e5c31af7Sopenharmony_ci			void main()
2579e5c31af7Sopenharmony_ci			{
2580e5c31af7Sopenharmony_ci	#if 1
2581e5c31af7Sopenharmony_ci	#	if 1
2582e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2583e5c31af7Sopenharmony_ci			}
2584e5c31af7Sopenharmony_ci		""
2585e5c31af7Sopenharmony_ci	end
2586e5c31af7Sopenharmony_ci
2587e5c31af7Sopenharmony_ciend # invalid_conditionals
2588e5c31af7Sopenharmony_ci
2589e5c31af7Sopenharmony_cigroup conditionals "Conditionals Tests"
2590e5c31af7Sopenharmony_ci
2591e5c31af7Sopenharmony_ci	case ifdef_1
2592e5c31af7Sopenharmony_ci		version 300 es
2593e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2594e5c31af7Sopenharmony_ci		both ""
2595e5c31af7Sopenharmony_ci	#version 300 es
2596e5c31af7Sopenharmony_ci	#define AAA
2597e5c31af7Sopenharmony_ci			precision mediump float;
2598e5c31af7Sopenharmony_ci			${DECLARATIONS}
2599e5c31af7Sopenharmony_ci			void main()
2600e5c31af7Sopenharmony_ci			{
2601e5c31af7Sopenharmony_ci	#ifdef AAA
2602e5c31af7Sopenharmony_ci				out0 = 1.0;
2603e5c31af7Sopenharmony_ci	#else
2604e5c31af7Sopenharmony_ci				out0 = -1.0;
2605e5c31af7Sopenharmony_ci	#endif
2606e5c31af7Sopenharmony_ci				${OUTPUT}
2607e5c31af7Sopenharmony_ci			}
2608e5c31af7Sopenharmony_ci		""
2609e5c31af7Sopenharmony_ci	end
2610e5c31af7Sopenharmony_ci
2611e5c31af7Sopenharmony_ci	case ifdef_2
2612e5c31af7Sopenharmony_ci		version 300 es
2613e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2614e5c31af7Sopenharmony_ci		both ""
2615e5c31af7Sopenharmony_ci	#version 300 es
2616e5c31af7Sopenharmony_ci	#define AAA
2617e5c31af7Sopenharmony_ci			precision mediump float;
2618e5c31af7Sopenharmony_ci			${DECLARATIONS}
2619e5c31af7Sopenharmony_ci			void main()
2620e5c31af7Sopenharmony_ci			{
2621e5c31af7Sopenharmony_ci	#if defined  ( AAA)
2622e5c31af7Sopenharmony_ci				out0 = 1.0;
2623e5c31af7Sopenharmony_ci	#else
2624e5c31af7Sopenharmony_ci				out0 = -1.0;
2625e5c31af7Sopenharmony_ci	#endif
2626e5c31af7Sopenharmony_ci				${OUTPUT}
2627e5c31af7Sopenharmony_ci			}
2628e5c31af7Sopenharmony_ci		""
2629e5c31af7Sopenharmony_ci	end
2630e5c31af7Sopenharmony_ci
2631e5c31af7Sopenharmony_ci	case ifdef_3
2632e5c31af7Sopenharmony_ci		version 300 es
2633e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2634e5c31af7Sopenharmony_ci		both ""
2635e5c31af7Sopenharmony_ci			#version 300 es
2636e5c31af7Sopenharmony_ci			precision mediump float;
2637e5c31af7Sopenharmony_ci			${DECLARATIONS}
2638e5c31af7Sopenharmony_ci			void main()
2639e5c31af7Sopenharmony_ci			{
2640e5c31af7Sopenharmony_ci	#ifdef AAA
2641e5c31af7Sopenharmony_ci				out0 = -1.0;
2642e5c31af7Sopenharmony_ci	#else
2643e5c31af7Sopenharmony_ci				out0 = 1.0;
2644e5c31af7Sopenharmony_ci	#endif
2645e5c31af7Sopenharmony_ci				${OUTPUT}
2646e5c31af7Sopenharmony_ci			}
2647e5c31af7Sopenharmony_ci		""
2648e5c31af7Sopenharmony_ci	end
2649e5c31af7Sopenharmony_ci
2650e5c31af7Sopenharmony_ci	case ifndef_1
2651e5c31af7Sopenharmony_ci		version 300 es
2652e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2653e5c31af7Sopenharmony_ci		both ""
2654e5c31af7Sopenharmony_ci			#version 300 es
2655e5c31af7Sopenharmony_ci			precision mediump float;
2656e5c31af7Sopenharmony_ci			${DECLARATIONS}
2657e5c31af7Sopenharmony_ci			void main()
2658e5c31af7Sopenharmony_ci			{
2659e5c31af7Sopenharmony_ci	#ifndef AAA
2660e5c31af7Sopenharmony_ci				out0 = 1.0;
2661e5c31af7Sopenharmony_ci	#else
2662e5c31af7Sopenharmony_ci				out0 = -1.0;
2663e5c31af7Sopenharmony_ci	#endif
2664e5c31af7Sopenharmony_ci				${OUTPUT}
2665e5c31af7Sopenharmony_ci			}
2666e5c31af7Sopenharmony_ci		""
2667e5c31af7Sopenharmony_ci	end
2668e5c31af7Sopenharmony_ci
2669e5c31af7Sopenharmony_ci	case ifndef_2
2670e5c31af7Sopenharmony_ci		version 300 es
2671e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2672e5c31af7Sopenharmony_ci		both ""
2673e5c31af7Sopenharmony_ci			#version 300 es
2674e5c31af7Sopenharmony_ci			precision mediump float;
2675e5c31af7Sopenharmony_ci			${DECLARATIONS}
2676e5c31af7Sopenharmony_ci	#define AAA
2677e5c31af7Sopenharmony_ci			void main()
2678e5c31af7Sopenharmony_ci			{
2679e5c31af7Sopenharmony_ci	#ifndef AAA
2680e5c31af7Sopenharmony_ci				out0 = -1.0;
2681e5c31af7Sopenharmony_ci	#else
2682e5c31af7Sopenharmony_ci				out0 = 1.0;
2683e5c31af7Sopenharmony_ci	#endif
2684e5c31af7Sopenharmony_ci				${OUTPUT}
2685e5c31af7Sopenharmony_ci			}
2686e5c31af7Sopenharmony_ci		""
2687e5c31af7Sopenharmony_ci	end
2688e5c31af7Sopenharmony_ci
2689e5c31af7Sopenharmony_ci	case mixed_conditional_inclusion
2690e5c31af7Sopenharmony_ci		version 300 es
2691e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2692e5c31af7Sopenharmony_ci		both ""
2693e5c31af7Sopenharmony_ci			#version 300 es
2694e5c31af7Sopenharmony_ci			precision mediump float;
2695e5c31af7Sopenharmony_ci			${DECLARATIONS}
2696e5c31af7Sopenharmony_ci			void main()
2697e5c31af7Sopenharmony_ci			{
2698e5c31af7Sopenharmony_ci	#ifndef AAA
2699e5c31af7Sopenharmony_ci				out0 = 1.0;
2700e5c31af7Sopenharmony_ci	#elif 1
2701e5c31af7Sopenharmony_ci				out0 = -1.0;
2702e5c31af7Sopenharmony_ci	#endif
2703e5c31af7Sopenharmony_ci				${OUTPUT}
2704e5c31af7Sopenharmony_ci			}
2705e5c31af7Sopenharmony_ci		""
2706e5c31af7Sopenharmony_ci	end
2707e5c31af7Sopenharmony_ci
2708e5c31af7Sopenharmony_ci	case nested_if_1
2709e5c31af7Sopenharmony_ci		version 300 es
2710e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2711e5c31af7Sopenharmony_ci		both ""
2712e5c31af7Sopenharmony_ci			#version 300 es
2713e5c31af7Sopenharmony_ci			precision mediump float;
2714e5c31af7Sopenharmony_ci			${DECLARATIONS}
2715e5c31af7Sopenharmony_ci			void main()
2716e5c31af7Sopenharmony_ci			{
2717e5c31af7Sopenharmony_ci	#if GL_ES
2718e5c31af7Sopenharmony_ci	#	if __VERSION__ != 300
2719e5c31af7Sopenharmony_ci				out0 = -1.0;
2720e5c31af7Sopenharmony_ci	#	else
2721e5c31af7Sopenharmony_ci				out0 = 1.0;
2722e5c31af7Sopenharmony_ci	#	endif
2723e5c31af7Sopenharmony_ci	#endif
2724e5c31af7Sopenharmony_ci				${OUTPUT}
2725e5c31af7Sopenharmony_ci			}
2726e5c31af7Sopenharmony_ci		""
2727e5c31af7Sopenharmony_ci	end
2728e5c31af7Sopenharmony_ci
2729e5c31af7Sopenharmony_ci	case nested_if_2
2730e5c31af7Sopenharmony_ci		version 300 es
2731e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2732e5c31af7Sopenharmony_ci		both ""
2733e5c31af7Sopenharmony_ci			#version 300 es
2734e5c31af7Sopenharmony_ci			precision mediump float;
2735e5c31af7Sopenharmony_ci			${DECLARATIONS}
2736e5c31af7Sopenharmony_ci			void main()
2737e5c31af7Sopenharmony_ci			{
2738e5c31af7Sopenharmony_ci	#if 1
2739e5c31af7Sopenharmony_ci	#	if 0
2740e5c31af7Sopenharmony_ci				out0 = -1.0;
2741e5c31af7Sopenharmony_ci	#	else
2742e5c31af7Sopenharmony_ci	#		if 0
2743e5c31af7Sopenharmony_ci				out0 = -1.0;
2744e5c31af7Sopenharmony_ci	#		elif 1
2745e5c31af7Sopenharmony_ci				out0 = 1.0;
2746e5c31af7Sopenharmony_ci	#		else
2747e5c31af7Sopenharmony_ci				out0 = -1.0;
2748e5c31af7Sopenharmony_ci	#		endif
2749e5c31af7Sopenharmony_ci	#	endif
2750e5c31af7Sopenharmony_ci	#endif
2751e5c31af7Sopenharmony_ci				${OUTPUT}
2752e5c31af7Sopenharmony_ci			}
2753e5c31af7Sopenharmony_ci		""
2754e5c31af7Sopenharmony_ci	end
2755e5c31af7Sopenharmony_ci
2756e5c31af7Sopenharmony_ci	case nested_if_3
2757e5c31af7Sopenharmony_ci		version 300 es
2758e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2759e5c31af7Sopenharmony_ci		both ""
2760e5c31af7Sopenharmony_ci			#version 300 es
2761e5c31af7Sopenharmony_ci			precision mediump float;
2762e5c31af7Sopenharmony_ci			${DECLARATIONS}
2763e5c31af7Sopenharmony_ci			void main()
2764e5c31af7Sopenharmony_ci			{
2765e5c31af7Sopenharmony_ci	#if 0
2766e5c31af7Sopenharmony_ci	#	if 1
2767e5c31af7Sopenharmony_ci				out0 = -1.0;
2768e5c31af7Sopenharmony_ci	#	endif
2769e5c31af7Sopenharmony_ci	#else
2770e5c31af7Sopenharmony_ci				out0 = 1.0;
2771e5c31af7Sopenharmony_ci	#endif
2772e5c31af7Sopenharmony_ci				${OUTPUT}
2773e5c31af7Sopenharmony_ci			}
2774e5c31af7Sopenharmony_ci		""
2775e5c31af7Sopenharmony_ci	end
2776e5c31af7Sopenharmony_ci
2777e5c31af7Sopenharmony_ciend # conditionals
2778e5c31af7Sopenharmony_ci
2779e5c31af7Sopenharmony_cigroup directive "Directive Tests"
2780e5c31af7Sopenharmony_ci
2781e5c31af7Sopenharmony_ci	case version_is_less
2782e5c31af7Sopenharmony_ci		expect compile_fail
2783e5c31af7Sopenharmony_ci		version 300 es
2784e5c31af7Sopenharmony_ci		both ""
2785e5c31af7Sopenharmony_ci			#version 3 es
2786e5c31af7Sopenharmony_ci			precision mediump float;
2787e5c31af7Sopenharmony_ci			${DECLARATIONS}
2788e5c31af7Sopenharmony_ci			void main()
2789e5c31af7Sopenharmony_ci			{
2790e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2791e5c31af7Sopenharmony_ci			}
2792e5c31af7Sopenharmony_ci		""
2793e5c31af7Sopenharmony_ci	end
2794e5c31af7Sopenharmony_ci
2795e5c31af7Sopenharmony_ci	case version_is_more
2796e5c31af7Sopenharmony_ci		expect compile_fail
2797e5c31af7Sopenharmony_ci		version 300 es
2798e5c31af7Sopenharmony_ci		both ""
2799e5c31af7Sopenharmony_ci			#version 3000 es
2800e5c31af7Sopenharmony_ci			precision mediump float;
2801e5c31af7Sopenharmony_ci			${DECLARATIONS}
2802e5c31af7Sopenharmony_ci			void main()
2803e5c31af7Sopenharmony_ci			{
2804e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2805e5c31af7Sopenharmony_ci			}
2806e5c31af7Sopenharmony_ci		""
2807e5c31af7Sopenharmony_ci	end
2808e5c31af7Sopenharmony_ci
2809e5c31af7Sopenharmony_ci	case version_missing_es
2810e5c31af7Sopenharmony_ci		expect compile_fail
2811e5c31af7Sopenharmony_ci		version 300 es
2812e5c31af7Sopenharmony_ci		both ""
2813e5c31af7Sopenharmony_ci			#version 300
2814e5c31af7Sopenharmony_ci			precision mediump float;
2815e5c31af7Sopenharmony_ci			${DECLARATIONS}
2816e5c31af7Sopenharmony_ci			void main()
2817e5c31af7Sopenharmony_ci			{
2818e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2819e5c31af7Sopenharmony_ci			}
2820e5c31af7Sopenharmony_ci		""
2821e5c31af7Sopenharmony_ci	end
2822e5c31af7Sopenharmony_ci
2823e5c31af7Sopenharmony_ci	case version_missing
2824e5c31af7Sopenharmony_ci		expect compile_fail
2825e5c31af7Sopenharmony_ci		version 300 es
2826e5c31af7Sopenharmony_ci		both ""
2827e5c31af7Sopenharmony_ci			#version
2828e5c31af7Sopenharmony_ci			precision mediump float;
2829e5c31af7Sopenharmony_ci			${DECLARATIONS}
2830e5c31af7Sopenharmony_ci			void main()
2831e5c31af7Sopenharmony_ci			{
2832e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2833e5c31af7Sopenharmony_ci			}
2834e5c31af7Sopenharmony_ci		""
2835e5c31af7Sopenharmony_ci	end
2836e5c31af7Sopenharmony_ci
2837e5c31af7Sopenharmony_ci	case version_not_first_statement_1
2838e5c31af7Sopenharmony_ci		expect compile_fail
2839e5c31af7Sopenharmony_ci		version 300 es
2840e5c31af7Sopenharmony_ci		both ""
2841e5c31af7Sopenharmony_ci			precision mediump float;
2842e5c31af7Sopenharmony_ci			#version 300 es
2843e5c31af7Sopenharmony_ci			${DECLARATIONS}
2844e5c31af7Sopenharmony_ci			void main()
2845e5c31af7Sopenharmony_ci			{
2846e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2847e5c31af7Sopenharmony_ci			}
2848e5c31af7Sopenharmony_ci		""
2849e5c31af7Sopenharmony_ci	end
2850e5c31af7Sopenharmony_ci
2851e5c31af7Sopenharmony_ci	case version_not_first_statement_2
2852e5c31af7Sopenharmony_ci		expect compile_fail
2853e5c31af7Sopenharmony_ci		version 300 es
2854e5c31af7Sopenharmony_ci		both ""
2855e5c31af7Sopenharmony_ci			#define FOO BAR
2856e5c31af7Sopenharmony_ci			#version 300 es
2857e5c31af7Sopenharmony_ci			precision mediump float;
2858e5c31af7Sopenharmony_ci			${DECLARATIONS}
2859e5c31af7Sopenharmony_ci			void main()
2860e5c31af7Sopenharmony_ci			{
2861e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2862e5c31af7Sopenharmony_ci			}
2863e5c31af7Sopenharmony_ci		""
2864e5c31af7Sopenharmony_ci	end
2865e5c31af7Sopenharmony_ci
2866e5c31af7Sopenharmony_ci	case version_invalid_token_1
2867e5c31af7Sopenharmony_ci		expect compile_fail
2868e5c31af7Sopenharmony_ci		version 300 es
2869e5c31af7Sopenharmony_ci		both ""
2870e5c31af7Sopenharmony_ci			#version 300 es.0
2871e5c31af7Sopenharmony_ci			precision mediump float;
2872e5c31af7Sopenharmony_ci			${DECLARATIONS}
2873e5c31af7Sopenharmony_ci			void main()
2874e5c31af7Sopenharmony_ci			{
2875e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2876e5c31af7Sopenharmony_ci			}
2877e5c31af7Sopenharmony_ci		""
2878e5c31af7Sopenharmony_ci	end
2879e5c31af7Sopenharmony_ci
2880e5c31af7Sopenharmony_ci	case version_invalid_token_2
2881e5c31af7Sopenharmony_ci		expect compile_fail
2882e5c31af7Sopenharmony_ci		version 300 es
2883e5c31af7Sopenharmony_ci		both ""
2884e5c31af7Sopenharmony_ci			#version foobar
2885e5c31af7Sopenharmony_ci			precision mediump float;
2886e5c31af7Sopenharmony_ci			${DECLARATIONS}
2887e5c31af7Sopenharmony_ci			void main()
2888e5c31af7Sopenharmony_ci			{
2889e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2890e5c31af7Sopenharmony_ci			}
2891e5c31af7Sopenharmony_ci		""
2892e5c31af7Sopenharmony_ci	end
2893e5c31af7Sopenharmony_ci
2894e5c31af7Sopenharmony_ci	case invalid_version
2895e5c31af7Sopenharmony_ci		expect compile_fail
2896e5c31af7Sopenharmony_ci		version 300 es
2897e5c31af7Sopenharmony_ci		both ""
2898e5c31af7Sopenharmony_ci			#version AAA
2899e5c31af7Sopenharmony_ci			precision mediump float;
2900e5c31af7Sopenharmony_ci			${DECLARATIONS}
2901e5c31af7Sopenharmony_ci			void main()
2902e5c31af7Sopenharmony_ci			{
2903e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2904e5c31af7Sopenharmony_ci			}
2905e5c31af7Sopenharmony_ci		""
2906e5c31af7Sopenharmony_ci	end
2907e5c31af7Sopenharmony_ci
2908e5c31af7Sopenharmony_ci	case additional_tokens
2909e5c31af7Sopenharmony_ci		expect compile_fail
2910e5c31af7Sopenharmony_ci		version 300 es
2911e5c31af7Sopenharmony_ci		both ""
2912e5c31af7Sopenharmony_ci			#version 300 es foobar
2913e5c31af7Sopenharmony_ci			precision mediump float;
2914e5c31af7Sopenharmony_ci			${DECLARATIONS}
2915e5c31af7Sopenharmony_ci			void main()
2916e5c31af7Sopenharmony_ci			{
2917e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2918e5c31af7Sopenharmony_ci			}
2919e5c31af7Sopenharmony_ci		""
2920e5c31af7Sopenharmony_ci	end
2921e5c31af7Sopenharmony_ci
2922e5c31af7Sopenharmony_ci	case error_with_no_tokens
2923e5c31af7Sopenharmony_ci		version 300 es
2924e5c31af7Sopenharmony_ci		expect compile_fail
2925e5c31af7Sopenharmony_ci		both ""
2926e5c31af7Sopenharmony_ci			#version 300 es
2927e5c31af7Sopenharmony_ci			#error
2928e5c31af7Sopenharmony_ci			precision mediump float;
2929e5c31af7Sopenharmony_ci			${DECLARATIONS}
2930e5c31af7Sopenharmony_ci			void main()
2931e5c31af7Sopenharmony_ci			{
2932e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2933e5c31af7Sopenharmony_ci			}
2934e5c31af7Sopenharmony_ci		""
2935e5c31af7Sopenharmony_ci	end
2936e5c31af7Sopenharmony_ci
2937e5c31af7Sopenharmony_ci	case error
2938e5c31af7Sopenharmony_ci		version 300 es
2939e5c31af7Sopenharmony_ci		expect compile_fail
2940e5c31af7Sopenharmony_ci		both ""
2941e5c31af7Sopenharmony_ci			#version 300 es
2942e5c31af7Sopenharmony_ci			#define AAA asdf
2943e5c31af7Sopenharmony_ci			#error 1 * AAA /* comment */
2944e5c31af7Sopenharmony_ci			precision mediump float;
2945e5c31af7Sopenharmony_ci			${DECLARATIONS}
2946e5c31af7Sopenharmony_ci			void main()
2947e5c31af7Sopenharmony_ci			{
2948e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
2949e5c31af7Sopenharmony_ci			}
2950e5c31af7Sopenharmony_ci		""
2951e5c31af7Sopenharmony_ci	end
2952e5c31af7Sopenharmony_ci
2953e5c31af7Sopenharmony_ciend # directive
2954e5c31af7Sopenharmony_ci
2955e5c31af7Sopenharmony_cigroup builtin "Built-in Symbol Tests"
2956e5c31af7Sopenharmony_ci
2957e5c31af7Sopenharmony_ci	case line
2958e5c31af7Sopenharmony_ci		version 300 es
2959e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2960e5c31af7Sopenharmony_ci		both ""
2961e5c31af7Sopenharmony_ci			#version 300 es
2962e5c31af7Sopenharmony_ci			precision mediump float;
2963e5c31af7Sopenharmony_ci			${DECLARATIONS}
2964e5c31af7Sopenharmony_ci			void main()
2965e5c31af7Sopenharmony_ci			{
2966e5c31af7Sopenharmony_ci			#line 1
2967e5c31af7Sopenharmony_ci				out0 = float(__LINE__);
2968e5c31af7Sopenharmony_ci				${OUTPUT}
2969e5c31af7Sopenharmony_ci			}
2970e5c31af7Sopenharmony_ci		""
2971e5c31af7Sopenharmony_ci	end
2972e5c31af7Sopenharmony_ci
2973e5c31af7Sopenharmony_ci	case line_and_file
2974e5c31af7Sopenharmony_ci		version 300 es
2975e5c31af7Sopenharmony_ci		values { output vec4 out0 = vec4(234.0, 234.0, 10.0, 10.0); }
2976e5c31af7Sopenharmony_ci		both ""
2977e5c31af7Sopenharmony_ci			#version 300 es
2978e5c31af7Sopenharmony_ci			precision mediump float;
2979e5c31af7Sopenharmony_ci			${DECLARATIONS}
2980e5c31af7Sopenharmony_ci			void main()
2981e5c31af7Sopenharmony_ci			{
2982e5c31af7Sopenharmony_ci	#line 234 10
2983e5c31af7Sopenharmony_ci				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
2984e5c31af7Sopenharmony_ci				${OUTPUT}
2985e5c31af7Sopenharmony_ci			}
2986e5c31af7Sopenharmony_ci		""
2987e5c31af7Sopenharmony_ci	end
2988e5c31af7Sopenharmony_ci
2989e5c31af7Sopenharmony_ciend # builtin
2990e5c31af7Sopenharmony_ci
2991e5c31af7Sopenharmony_cigroup pragmas "Pragma Tests"
2992e5c31af7Sopenharmony_ci
2993e5c31af7Sopenharmony_ci	case pragma_vertex
2994e5c31af7Sopenharmony_ci		version 300 es
2995e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
2996e5c31af7Sopenharmony_ci		vertex ""
2997e5c31af7Sopenharmony_ci			#version 300 es
2998e5c31af7Sopenharmony_ci			#pragma
2999e5c31af7Sopenharmony_ci			#pragma STDGL invariant(all)
3000e5c31af7Sopenharmony_ci			#pragma debug(off)
3001e5c31af7Sopenharmony_ci			#pragma optimize(off)
3002e5c31af7Sopenharmony_ci
3003e5c31af7Sopenharmony_ci			${VERTEX_DECLARATIONS}
3004e5c31af7Sopenharmony_ci			void main()
3005e5c31af7Sopenharmony_ci			{
3006e5c31af7Sopenharmony_ci				${VERTEX_OUTPUT}
3007e5c31af7Sopenharmony_ci			}
3008e5c31af7Sopenharmony_ci		""
3009e5c31af7Sopenharmony_ci		fragment ""
3010e5c31af7Sopenharmony_ci			#version 300 es
3011e5c31af7Sopenharmony_ci			precision mediump float;
3012e5c31af7Sopenharmony_ci			${FRAGMENT_DECLARATIONS}
3013e5c31af7Sopenharmony_ci			void main()
3014e5c31af7Sopenharmony_ci			{
3015e5c31af7Sopenharmony_ci				out0 = 1.0;
3016e5c31af7Sopenharmony_ci				${FRAGMENT_OUTPUT}
3017e5c31af7Sopenharmony_ci			}
3018e5c31af7Sopenharmony_ci		""
3019e5c31af7Sopenharmony_ci	end
3020e5c31af7Sopenharmony_ci
3021e5c31af7Sopenharmony_ci	case pragma_fragment
3022e5c31af7Sopenharmony_ci		version 300 es
3023e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3024e5c31af7Sopenharmony_ci		vertex ""
3025e5c31af7Sopenharmony_ci			#version 300 es
3026e5c31af7Sopenharmony_ci			${VERTEX_DECLARATIONS}
3027e5c31af7Sopenharmony_ci			void main()
3028e5c31af7Sopenharmony_ci			{
3029e5c31af7Sopenharmony_ci				${VERTEX_OUTPUT}
3030e5c31af7Sopenharmony_ci			}
3031e5c31af7Sopenharmony_ci		""
3032e5c31af7Sopenharmony_ci		fragment ""
3033e5c31af7Sopenharmony_ci			#version 300 es
3034e5c31af7Sopenharmony_ci			#pragma
3035e5c31af7Sopenharmony_ci			#pragma debug(off)
3036e5c31af7Sopenharmony_ci			#pragma optimize(off)
3037e5c31af7Sopenharmony_ci
3038e5c31af7Sopenharmony_ci			precision mediump float;
3039e5c31af7Sopenharmony_ci			${FRAGMENT_DECLARATIONS}
3040e5c31af7Sopenharmony_ci			void main()
3041e5c31af7Sopenharmony_ci			{
3042e5c31af7Sopenharmony_ci				out0 = 1.0;
3043e5c31af7Sopenharmony_ci				${FRAGMENT_OUTPUT}
3044e5c31af7Sopenharmony_ci			}
3045e5c31af7Sopenharmony_ci		""
3046e5c31af7Sopenharmony_ci	end
3047e5c31af7Sopenharmony_ci
3048e5c31af7Sopenharmony_ci	case pragma_macro_exp
3049e5c31af7Sopenharmony_ci		version 300 es
3050e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3051e5c31af7Sopenharmony_ci		both ""
3052e5c31af7Sopenharmony_ci	#version 300 es
3053e5c31af7Sopenharmony_ci	#define off	INVALID
3054e5c31af7Sopenharmony_ci	/* pragma line not macro expanded */
3055e5c31af7Sopenharmony_ci	#pragma debug(off)
3056e5c31af7Sopenharmony_ci
3057e5c31af7Sopenharmony_ci			precision mediump float;
3058e5c31af7Sopenharmony_ci			${DECLARATIONS}
3059e5c31af7Sopenharmony_ci			void main()
3060e5c31af7Sopenharmony_ci			{
3061e5c31af7Sopenharmony_ci				out0 = 1.0;
3062e5c31af7Sopenharmony_ci				${OUTPUT}
3063e5c31af7Sopenharmony_ci			}
3064e5c31af7Sopenharmony_ci		""
3065e5c31af7Sopenharmony_ci	end
3066e5c31af7Sopenharmony_ci
3067e5c31af7Sopenharmony_ciend # pragmas
3068e5c31af7Sopenharmony_ci
3069e5c31af7Sopenharmony_cigroup extensions "Extension Tests"
3070e5c31af7Sopenharmony_ci
3071e5c31af7Sopenharmony_ci	case basic
3072e5c31af7Sopenharmony_ci		version 300 es
3073e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3074e5c31af7Sopenharmony_ci		both ""
3075e5c31af7Sopenharmony_ci			#version 300 es
3076e5c31af7Sopenharmony_ci			#extension all : warn
3077e5c31af7Sopenharmony_ci
3078e5c31af7Sopenharmony_ci			precision mediump float;
3079e5c31af7Sopenharmony_ci			${DECLARATIONS}
3080e5c31af7Sopenharmony_ci			void main()
3081e5c31af7Sopenharmony_ci			{
3082e5c31af7Sopenharmony_ci				out0 = 1.0;
3083e5c31af7Sopenharmony_ci				${OUTPUT}
3084e5c31af7Sopenharmony_ci			}
3085e5c31af7Sopenharmony_ci		""
3086e5c31af7Sopenharmony_ci	end
3087e5c31af7Sopenharmony_ci
3088e5c31af7Sopenharmony_ci	case macro_exp
3089e5c31af7Sopenharmony_ci		version 300 es
3090e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3091e5c31af7Sopenharmony_ci		both ""
3092e5c31af7Sopenharmony_ci			#version 300 es
3093e5c31af7Sopenharmony_ci			#define warn enable
3094e5c31af7Sopenharmony_ci
3095e5c31af7Sopenharmony_ci			#extension all : warn
3096e5c31af7Sopenharmony_ci
3097e5c31af7Sopenharmony_ci			precision mediump float;
3098e5c31af7Sopenharmony_ci			${DECLARATIONS}
3099e5c31af7Sopenharmony_ci			void main()
3100e5c31af7Sopenharmony_ci			{
3101e5c31af7Sopenharmony_ci				out0 = 1.0;
3102e5c31af7Sopenharmony_ci				${OUTPUT}
3103e5c31af7Sopenharmony_ci			}
3104e5c31af7Sopenharmony_ci		""
3105e5c31af7Sopenharmony_ci	end
3106e5c31af7Sopenharmony_ci
3107e5c31af7Sopenharmony_ci	case missing_extension_name
3108e5c31af7Sopenharmony_ci		version 300 es
3109e5c31af7Sopenharmony_ci		expect compile_fail
3110e5c31af7Sopenharmony_ci		both ""
3111e5c31af7Sopenharmony_ci			#version 300 es
3112e5c31af7Sopenharmony_ci			#extension
3113e5c31af7Sopenharmony_ci			precision mediump float;
3114e5c31af7Sopenharmony_ci			${DECLARATIONS}
3115e5c31af7Sopenharmony_ci			void main()
3116e5c31af7Sopenharmony_ci			{
3117e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3118e5c31af7Sopenharmony_ci			}
3119e5c31af7Sopenharmony_ci		""
3120e5c31af7Sopenharmony_ci	end
3121e5c31af7Sopenharmony_ci
3122e5c31af7Sopenharmony_ci	case invalid_extension_name
3123e5c31af7Sopenharmony_ci		version 300 es
3124e5c31af7Sopenharmony_ci		expect compile_fail
3125e5c31af7Sopenharmony_ci		both ""
3126e5c31af7Sopenharmony_ci			#version 300 es
3127e5c31af7Sopenharmony_ci			#extension 2 : all
3128e5c31af7Sopenharmony_ci			precision mediump float;
3129e5c31af7Sopenharmony_ci			${DECLARATIONS}
3130e5c31af7Sopenharmony_ci			void main()
3131e5c31af7Sopenharmony_ci			{
3132e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3133e5c31af7Sopenharmony_ci			}
3134e5c31af7Sopenharmony_ci		""
3135e5c31af7Sopenharmony_ci	end
3136e5c31af7Sopenharmony_ci
3137e5c31af7Sopenharmony_ci	case missing_colon
3138e5c31af7Sopenharmony_ci		version 300 es
3139e5c31af7Sopenharmony_ci		expect compile_fail
3140e5c31af7Sopenharmony_ci		both ""
3141e5c31af7Sopenharmony_ci			#version 300 es
3142e5c31af7Sopenharmony_ci			#extension all
3143e5c31af7Sopenharmony_ci			precision mediump float;
3144e5c31af7Sopenharmony_ci			${DECLARATIONS}
3145e5c31af7Sopenharmony_ci			void main()
3146e5c31af7Sopenharmony_ci			{
3147e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3148e5c31af7Sopenharmony_ci			}
3149e5c31af7Sopenharmony_ci		""
3150e5c31af7Sopenharmony_ci	end
3151e5c31af7Sopenharmony_ci
3152e5c31af7Sopenharmony_ci	case expected_colon
3153e5c31af7Sopenharmony_ci		version 300 es
3154e5c31af7Sopenharmony_ci		expect compile_fail
3155e5c31af7Sopenharmony_ci		both ""
3156e5c31af7Sopenharmony_ci			#version 300 es
3157e5c31af7Sopenharmony_ci			#extension all ;
3158e5c31af7Sopenharmony_ci			precision mediump float;
3159e5c31af7Sopenharmony_ci			${DECLARATIONS}
3160e5c31af7Sopenharmony_ci			void main()
3161e5c31af7Sopenharmony_ci			{
3162e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3163e5c31af7Sopenharmony_ci			}
3164e5c31af7Sopenharmony_ci		""
3165e5c31af7Sopenharmony_ci	end
3166e5c31af7Sopenharmony_ci
3167e5c31af7Sopenharmony_ci	case missing_behavior
3168e5c31af7Sopenharmony_ci		version 300 es
3169e5c31af7Sopenharmony_ci		expect compile_fail
3170e5c31af7Sopenharmony_ci		both ""
3171e5c31af7Sopenharmony_ci			#version 300 es
3172e5c31af7Sopenharmony_ci			#extension all :
3173e5c31af7Sopenharmony_ci			precision mediump float;
3174e5c31af7Sopenharmony_ci			${DECLARATIONS}
3175e5c31af7Sopenharmony_ci			void main()
3176e5c31af7Sopenharmony_ci			{
3177e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3178e5c31af7Sopenharmony_ci			}
3179e5c31af7Sopenharmony_ci		""
3180e5c31af7Sopenharmony_ci	end
3181e5c31af7Sopenharmony_ci
3182e5c31af7Sopenharmony_ci	case invalid_behavior_1
3183e5c31af7Sopenharmony_ci		version 300 es
3184e5c31af7Sopenharmony_ci		expect compile_fail
3185e5c31af7Sopenharmony_ci		both ""
3186e5c31af7Sopenharmony_ci			#version 300 es
3187e5c31af7Sopenharmony_ci			#extension all : WARN
3188e5c31af7Sopenharmony_ci			precision mediump float;
3189e5c31af7Sopenharmony_ci			${DECLARATIONS}
3190e5c31af7Sopenharmony_ci			void main()
3191e5c31af7Sopenharmony_ci			{
3192e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3193e5c31af7Sopenharmony_ci			}
3194e5c31af7Sopenharmony_ci		""
3195e5c31af7Sopenharmony_ci	end
3196e5c31af7Sopenharmony_ci
3197e5c31af7Sopenharmony_ci	case invalid_behavior_2
3198e5c31af7Sopenharmony_ci		version 300 es
3199e5c31af7Sopenharmony_ci		expect compile_fail
3200e5c31af7Sopenharmony_ci		both ""
3201e5c31af7Sopenharmony_ci			#version 300 es
3202e5c31af7Sopenharmony_ci			#extension all : require
3203e5c31af7Sopenharmony_ci			precision mediump float;
3204e5c31af7Sopenharmony_ci			${DECLARATIONS}
3205e5c31af7Sopenharmony_ci			void main()
3206e5c31af7Sopenharmony_ci			{
3207e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3208e5c31af7Sopenharmony_ci			}
3209e5c31af7Sopenharmony_ci		""
3210e5c31af7Sopenharmony_ci	end
3211e5c31af7Sopenharmony_ci
3212e5c31af7Sopenharmony_ci	case invalid_behavior_3
3213e5c31af7Sopenharmony_ci		version 300 es
3214e5c31af7Sopenharmony_ci		expect compile_fail
3215e5c31af7Sopenharmony_ci		both ""
3216e5c31af7Sopenharmony_ci			#version 300 es
3217e5c31af7Sopenharmony_ci			#extension all : enable
3218e5c31af7Sopenharmony_ci			precision mediump float;
3219e5c31af7Sopenharmony_ci			${DECLARATIONS}
3220e5c31af7Sopenharmony_ci			void main()
3221e5c31af7Sopenharmony_ci			{
3222e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3223e5c31af7Sopenharmony_ci			}
3224e5c31af7Sopenharmony_ci		""
3225e5c31af7Sopenharmony_ci	end
3226e5c31af7Sopenharmony_ci
3227e5c31af7Sopenharmony_ci	case invalid_char_in_name
3228e5c31af7Sopenharmony_ci		version 300 es
3229e5c31af7Sopenharmony_ci		expect compile_fail
3230e5c31af7Sopenharmony_ci		both ""
3231e5c31af7Sopenharmony_ci			#version 300 es
3232e5c31af7Sopenharmony_ci			#extension all� : warn
3233e5c31af7Sopenharmony_ci			precision mediump float;
3234e5c31af7Sopenharmony_ci			${DECLARATIONS}
3235e5c31af7Sopenharmony_ci			void main()
3236e5c31af7Sopenharmony_ci			{
3237e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3238e5c31af7Sopenharmony_ci			}
3239e5c31af7Sopenharmony_ci		""
3240e5c31af7Sopenharmony_ci	end
3241e5c31af7Sopenharmony_ci
3242e5c31af7Sopenharmony_ci	case invalid_char_in_behavior
3243e5c31af7Sopenharmony_ci		version 300 es
3244e5c31af7Sopenharmony_ci		expect compile_fail
3245e5c31af7Sopenharmony_ci		both ""
3246e5c31af7Sopenharmony_ci			#version 300 es
3247e5c31af7Sopenharmony_ci			#extension all : war�n
3248e5c31af7Sopenharmony_ci			precision mediump float;
3249e5c31af7Sopenharmony_ci			${DECLARATIONS}
3250e5c31af7Sopenharmony_ci			void main()
3251e5c31af7Sopenharmony_ci			{
3252e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3253e5c31af7Sopenharmony_ci			}
3254e5c31af7Sopenharmony_ci		""
3255e5c31af7Sopenharmony_ci	end
3256e5c31af7Sopenharmony_ci
3257e5c31af7Sopenharmony_ci	case unterminated_comment
3258e5c31af7Sopenharmony_ci		version 300 es
3259e5c31af7Sopenharmony_ci		expect compile_fail
3260e5c31af7Sopenharmony_ci		both ""
3261e5c31af7Sopenharmony_ci			#version 300 es
3262e5c31af7Sopenharmony_ci			#extension all : warn /*asd
3263e5c31af7Sopenharmony_ci			precision mediump float;
3264e5c31af7Sopenharmony_ci			${DECLARATIONS}
3265e5c31af7Sopenharmony_ci			void main()
3266e5c31af7Sopenharmony_ci			{
3267e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3268e5c31af7Sopenharmony_ci			}
3269e5c31af7Sopenharmony_ci		""
3270e5c31af7Sopenharmony_ci	end
3271e5c31af7Sopenharmony_ci
3272e5c31af7Sopenharmony_ci	case after_non_preprocessing_tokens
3273e5c31af7Sopenharmony_ci		version 300 es
3274e5c31af7Sopenharmony_ci		expect compile_fail
3275e5c31af7Sopenharmony_ci		both ""
3276e5c31af7Sopenharmony_ci			#version 300 es
3277e5c31af7Sopenharmony_ci			#extension all : warn
3278e5c31af7Sopenharmony_ci
3279e5c31af7Sopenharmony_ci			precision mediump float;
3280e5c31af7Sopenharmony_ci			${DECLARATIONS}
3281e5c31af7Sopenharmony_ci			void main()
3282e5c31af7Sopenharmony_ci			{
3283e5c31af7Sopenharmony_ci			#extension all : disable
3284e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3285e5c31af7Sopenharmony_ci			}
3286e5c31af7Sopenharmony_ci		""
3287e5c31af7Sopenharmony_ci	end
3288e5c31af7Sopenharmony_ciend # extensions
3289e5c31af7Sopenharmony_ci
3290e5c31af7Sopenharmony_cigroup expressions "Expression Tests"
3291e5c31af7Sopenharmony_ci
3292e5c31af7Sopenharmony_ci	case shift_left
3293e5c31af7Sopenharmony_ci		version 300 es
3294e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3295e5c31af7Sopenharmony_ci		both ""
3296e5c31af7Sopenharmony_ci			#version 300 es
3297e5c31af7Sopenharmony_ci			precision mediump float;
3298e5c31af7Sopenharmony_ci			${DECLARATIONS}
3299e5c31af7Sopenharmony_ci			void main()
3300e5c31af7Sopenharmony_ci			{
3301e5c31af7Sopenharmony_ci				#define VAL 4
3302e5c31af7Sopenharmony_ci				out0 = 0.0;
3303e5c31af7Sopenharmony_ci				#if (VAL << 2) == 16
3304e5c31af7Sopenharmony_ci					out0 = 1.0;
3305e5c31af7Sopenharmony_ci				#endif
3306e5c31af7Sopenharmony_ci				${OUTPUT}
3307e5c31af7Sopenharmony_ci			}
3308e5c31af7Sopenharmony_ci		""
3309e5c31af7Sopenharmony_ci	end
3310e5c31af7Sopenharmony_ci
3311e5c31af7Sopenharmony_ci	case shift_right
3312e5c31af7Sopenharmony_ci		version 300 es
3313e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3314e5c31af7Sopenharmony_ci		both ""
3315e5c31af7Sopenharmony_ci			#version 300 es
3316e5c31af7Sopenharmony_ci			precision mediump float;
3317e5c31af7Sopenharmony_ci			${DECLARATIONS}
3318e5c31af7Sopenharmony_ci			void main()
3319e5c31af7Sopenharmony_ci			{
3320e5c31af7Sopenharmony_ci				#define VAL 5
3321e5c31af7Sopenharmony_ci				out0 = 0.0;
3322e5c31af7Sopenharmony_ci				#if (VAL >> 1) == 2
3323e5c31af7Sopenharmony_ci					out0 = 1.0;
3324e5c31af7Sopenharmony_ci				#endif
3325e5c31af7Sopenharmony_ci				${OUTPUT}
3326e5c31af7Sopenharmony_ci			}
3327e5c31af7Sopenharmony_ci		""
3328e5c31af7Sopenharmony_ci	end
3329e5c31af7Sopenharmony_ci
3330e5c31af7Sopenharmony_ci	case cmp_less_than
3331e5c31af7Sopenharmony_ci		version 300 es
3332e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3333e5c31af7Sopenharmony_ci		both ""
3334e5c31af7Sopenharmony_ci			#version 300 es
3335e5c31af7Sopenharmony_ci			precision mediump float;
3336e5c31af7Sopenharmony_ci			${DECLARATIONS}
3337e5c31af7Sopenharmony_ci			void main()
3338e5c31af7Sopenharmony_ci			{
3339e5c31af7Sopenharmony_ci				#define VAL 5
3340e5c31af7Sopenharmony_ci				out0 = 0.0;
3341e5c31af7Sopenharmony_ci				#if (VAL < 6) && (-VAL < -4)
3342e5c31af7Sopenharmony_ci					out0 = 1.0;
3343e5c31af7Sopenharmony_ci				#endif
3344e5c31af7Sopenharmony_ci				${OUTPUT}
3345e5c31af7Sopenharmony_ci			}
3346e5c31af7Sopenharmony_ci		""
3347e5c31af7Sopenharmony_ci	end
3348e5c31af7Sopenharmony_ci
3349e5c31af7Sopenharmony_ci	case less_or_equal
3350e5c31af7Sopenharmony_ci		version 300 es
3351e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3352e5c31af7Sopenharmony_ci		both ""
3353e5c31af7Sopenharmony_ci			#version 300 es
3354e5c31af7Sopenharmony_ci			precision mediump float;
3355e5c31af7Sopenharmony_ci			${DECLARATIONS}
3356e5c31af7Sopenharmony_ci			void main()
3357e5c31af7Sopenharmony_ci			{
3358e5c31af7Sopenharmony_ci				#define VAL 6
3359e5c31af7Sopenharmony_ci				out0 = 0.0;
3360e5c31af7Sopenharmony_ci				#if (VAL <= 6) && (-VAL <= -6)
3361e5c31af7Sopenharmony_ci					out0 = 1.0;
3362e5c31af7Sopenharmony_ci				#endif
3363e5c31af7Sopenharmony_ci				${OUTPUT}
3364e5c31af7Sopenharmony_ci			}
3365e5c31af7Sopenharmony_ci		""
3366e5c31af7Sopenharmony_ci	end
3367e5c31af7Sopenharmony_ci
3368e5c31af7Sopenharmony_ci	case or
3369e5c31af7Sopenharmony_ci		version 300 es
3370e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3371e5c31af7Sopenharmony_ci		both ""
3372e5c31af7Sopenharmony_ci			#version 300 es
3373e5c31af7Sopenharmony_ci			precision mediump float;
3374e5c31af7Sopenharmony_ci			${DECLARATIONS}
3375e5c31af7Sopenharmony_ci			void main()
3376e5c31af7Sopenharmony_ci			{
3377e5c31af7Sopenharmony_ci				#define VAL 6
3378e5c31af7Sopenharmony_ci				out0 = 0.0;
3379e5c31af7Sopenharmony_ci				#if (VAL | 5) == 7
3380e5c31af7Sopenharmony_ci					out0 = 1.0;
3381e5c31af7Sopenharmony_ci				#endif
3382e5c31af7Sopenharmony_ci				${OUTPUT}
3383e5c31af7Sopenharmony_ci			}
3384e5c31af7Sopenharmony_ci		""
3385e5c31af7Sopenharmony_ci	end
3386e5c31af7Sopenharmony_ci
3387e5c31af7Sopenharmony_ci	case and
3388e5c31af7Sopenharmony_ci		version 300 es
3389e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3390e5c31af7Sopenharmony_ci		both ""
3391e5c31af7Sopenharmony_ci			#version 300 es
3392e5c31af7Sopenharmony_ci			precision mediump float;
3393e5c31af7Sopenharmony_ci			${DECLARATIONS}
3394e5c31af7Sopenharmony_ci			void main()
3395e5c31af7Sopenharmony_ci			{
3396e5c31af7Sopenharmony_ci				#define VAL 6
3397e5c31af7Sopenharmony_ci				out0 = 0.0;
3398e5c31af7Sopenharmony_ci				#if (VAL & 5) == 4
3399e5c31af7Sopenharmony_ci					out0 = 1.0;
3400e5c31af7Sopenharmony_ci				#endif
3401e5c31af7Sopenharmony_ci				${OUTPUT}
3402e5c31af7Sopenharmony_ci			}
3403e5c31af7Sopenharmony_ci		""
3404e5c31af7Sopenharmony_ci	end
3405e5c31af7Sopenharmony_ci
3406e5c31af7Sopenharmony_ci	case xor
3407e5c31af7Sopenharmony_ci		version 300 es
3408e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3409e5c31af7Sopenharmony_ci		both ""
3410e5c31af7Sopenharmony_ci			#version 300 es
3411e5c31af7Sopenharmony_ci			precision mediump float;
3412e5c31af7Sopenharmony_ci			${DECLARATIONS}
3413e5c31af7Sopenharmony_ci			void main()
3414e5c31af7Sopenharmony_ci			{
3415e5c31af7Sopenharmony_ci				#define VAL 6
3416e5c31af7Sopenharmony_ci				out0 = 0.0;
3417e5c31af7Sopenharmony_ci				#if (VAL ^ 5) == 3
3418e5c31af7Sopenharmony_ci					out0 = 1.0;
3419e5c31af7Sopenharmony_ci				#endif
3420e5c31af7Sopenharmony_ci				${OUTPUT}
3421e5c31af7Sopenharmony_ci			}
3422e5c31af7Sopenharmony_ci		""
3423e5c31af7Sopenharmony_ci	end
3424e5c31af7Sopenharmony_ci
3425e5c31af7Sopenharmony_ci	case mod
3426e5c31af7Sopenharmony_ci		version 300 es
3427e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3428e5c31af7Sopenharmony_ci		both ""
3429e5c31af7Sopenharmony_ci			#version 300 es
3430e5c31af7Sopenharmony_ci			precision mediump float;
3431e5c31af7Sopenharmony_ci			${DECLARATIONS}
3432e5c31af7Sopenharmony_ci			void main()
3433e5c31af7Sopenharmony_ci			{
3434e5c31af7Sopenharmony_ci				#define VAL 12
3435e5c31af7Sopenharmony_ci				out0 = 0.0;
3436e5c31af7Sopenharmony_ci				#if (VAL % 5) == 2
3437e5c31af7Sopenharmony_ci					out0 = 1.0;
3438e5c31af7Sopenharmony_ci				#endif
3439e5c31af7Sopenharmony_ci				${OUTPUT}
3440e5c31af7Sopenharmony_ci			}
3441e5c31af7Sopenharmony_ci		""
3442e5c31af7Sopenharmony_ci	end
3443e5c31af7Sopenharmony_ci
3444e5c31af7Sopenharmony_ci	case parenthesis_value
3445e5c31af7Sopenharmony_ci		version 300 es
3446e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3447e5c31af7Sopenharmony_ci		both ""
3448e5c31af7Sopenharmony_ci			#version 300 es
3449e5c31af7Sopenharmony_ci			precision mediump float;
3450e5c31af7Sopenharmony_ci			${DECLARATIONS}
3451e5c31af7Sopenharmony_ci			void main()
3452e5c31af7Sopenharmony_ci			{
3453e5c31af7Sopenharmony_ci				#define VAL ((  (4   ) )  )
3454e5c31af7Sopenharmony_ci				out0 = 0.0;
3455e5c31af7Sopenharmony_ci				#if VAL >= 4
3456e5c31af7Sopenharmony_ci					out0 = 1.0;
3457e5c31af7Sopenharmony_ci				#endif
3458e5c31af7Sopenharmony_ci				${OUTPUT}
3459e5c31af7Sopenharmony_ci			}
3460e5c31af7Sopenharmony_ci		""
3461e5c31af7Sopenharmony_ci	end
3462e5c31af7Sopenharmony_ci
3463e5c31af7Sopenharmony_ci	case parenthesis_tricky
3464e5c31af7Sopenharmony_ci		version 300 es
3465e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3466e5c31af7Sopenharmony_ci		both ""
3467e5c31af7Sopenharmony_ci			#version 300 es
3468e5c31af7Sopenharmony_ci			precision mediump float;
3469e5c31af7Sopenharmony_ci			${DECLARATIONS}
3470e5c31af7Sopenharmony_ci			void main()
3471e5c31af7Sopenharmony_ci			{
3472e5c31af7Sopenharmony_ci				#define VAL ((  (4   ) )
3473e5c31af7Sopenharmony_ci				out0 = 0.0;
3474e5c31af7Sopenharmony_ci				#if VAL) >= 4
3475e5c31af7Sopenharmony_ci					out0 = 1.0;
3476e5c31af7Sopenharmony_ci				#endif
3477e5c31af7Sopenharmony_ci				${OUTPUT}
3478e5c31af7Sopenharmony_ci			}
3479e5c31af7Sopenharmony_ci		""
3480e5c31af7Sopenharmony_ci	end
3481e5c31af7Sopenharmony_ci
3482e5c31af7Sopenharmony_ci	case parenthesis_if_no
3483e5c31af7Sopenharmony_ci		version 300 es
3484e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3485e5c31af7Sopenharmony_ci		both ""
3486e5c31af7Sopenharmony_ci			#version 300 es
3487e5c31af7Sopenharmony_ci			precision mediump float;
3488e5c31af7Sopenharmony_ci			${DECLARATIONS}
3489e5c31af7Sopenharmony_ci			void main()
3490e5c31af7Sopenharmony_ci			{
3491e5c31af7Sopenharmony_ci				#define VAL 4
3492e5c31af7Sopenharmony_ci				out0 = 0.0;
3493e5c31af7Sopenharmony_ci				#if VAL >= 4
3494e5c31af7Sopenharmony_ci					out0 = 1.0;
3495e5c31af7Sopenharmony_ci				#endif
3496e5c31af7Sopenharmony_ci				${OUTPUT}
3497e5c31af7Sopenharmony_ci			}
3498e5c31af7Sopenharmony_ci		""
3499e5c31af7Sopenharmony_ci	end
3500e5c31af7Sopenharmony_ci
3501e5c31af7Sopenharmony_ci	case parenthesis_if
3502e5c31af7Sopenharmony_ci		version 300 es
3503e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3504e5c31af7Sopenharmony_ci		both ""
3505e5c31af7Sopenharmony_ci			#version 300 es
3506e5c31af7Sopenharmony_ci			precision mediump float;
3507e5c31af7Sopenharmony_ci			${DECLARATIONS}
3508e5c31af7Sopenharmony_ci			void main()
3509e5c31af7Sopenharmony_ci			{
3510e5c31af7Sopenharmony_ci				#define VAL 4
3511e5c31af7Sopenharmony_ci				out0 = 0.0;
3512e5c31af7Sopenharmony_ci				#if (VAL >= 4)
3513e5c31af7Sopenharmony_ci					out0 = 1.0;
3514e5c31af7Sopenharmony_ci				#endif
3515e5c31af7Sopenharmony_ci				${OUTPUT}
3516e5c31af7Sopenharmony_ci			}
3517e5c31af7Sopenharmony_ci		""
3518e5c31af7Sopenharmony_ci	end
3519e5c31af7Sopenharmony_ci
3520e5c31af7Sopenharmony_ci	case parenthesis_multi_if
3521e5c31af7Sopenharmony_ci		version 300 es
3522e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3523e5c31af7Sopenharmony_ci		both ""
3524e5c31af7Sopenharmony_ci			#version 300 es
3525e5c31af7Sopenharmony_ci			precision mediump float;
3526e5c31af7Sopenharmony_ci			${DECLARATIONS}
3527e5c31af7Sopenharmony_ci			void main()
3528e5c31af7Sopenharmony_ci			{
3529e5c31af7Sopenharmony_ci				#define VAL (4)
3530e5c31af7Sopenharmony_ci				out0 = 0.0;
3531e5c31af7Sopenharmony_ci				#if (((VAL)) >= (4))
3532e5c31af7Sopenharmony_ci					out0 = 1.0;
3533e5c31af7Sopenharmony_ci				#endif
3534e5c31af7Sopenharmony_ci				${OUTPUT}
3535e5c31af7Sopenharmony_ci			}
3536e5c31af7Sopenharmony_ci		""
3537e5c31af7Sopenharmony_ci	end
3538e5c31af7Sopenharmony_ci
3539e5c31af7Sopenharmony_ci	case parenthesis_single_if
3540e5c31af7Sopenharmony_ci		version 300 es
3541e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3542e5c31af7Sopenharmony_ci		both ""
3543e5c31af7Sopenharmony_ci			#version 300 es
3544e5c31af7Sopenharmony_ci			precision mediump float;
3545e5c31af7Sopenharmony_ci			${DECLARATIONS}
3546e5c31af7Sopenharmony_ci			void main()
3547e5c31af7Sopenharmony_ci			{
3548e5c31af7Sopenharmony_ci				#define VAL 4
3549e5c31af7Sopenharmony_ci				out0 = 0.0;
3550e5c31af7Sopenharmony_ci				#if (VAL >= 4)
3551e5c31af7Sopenharmony_ci					out0 = 1.0;
3552e5c31af7Sopenharmony_ci				#endif
3553e5c31af7Sopenharmony_ci				${OUTPUT}
3554e5c31af7Sopenharmony_ci			}
3555e5c31af7Sopenharmony_ci		""
3556e5c31af7Sopenharmony_ci	end
3557e5c31af7Sopenharmony_ci
3558e5c31af7Sopenharmony_ci	case parenthesis_ifelse_true
3559e5c31af7Sopenharmony_ci		version 300 es
3560e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3561e5c31af7Sopenharmony_ci		both ""
3562e5c31af7Sopenharmony_ci			#version 300 es
3563e5c31af7Sopenharmony_ci			precision mediump float;
3564e5c31af7Sopenharmony_ci			${DECLARATIONS}
3565e5c31af7Sopenharmony_ci			void main()
3566e5c31af7Sopenharmony_ci			{
3567e5c31af7Sopenharmony_ci				#define VAL 4
3568e5c31af7Sopenharmony_ci				#if (VAL >= 4)
3569e5c31af7Sopenharmony_ci					out0 = 1.0;
3570e5c31af7Sopenharmony_ci				#else
3571e5c31af7Sopenharmony_ci					out0 = 0.0;
3572e5c31af7Sopenharmony_ci				#endif
3573e5c31af7Sopenharmony_ci				${OUTPUT}
3574e5c31af7Sopenharmony_ci			}
3575e5c31af7Sopenharmony_ci		""
3576e5c31af7Sopenharmony_ci	end
3577e5c31af7Sopenharmony_ci
3578e5c31af7Sopenharmony_ci	case parenthesis_ifelse_false
3579e5c31af7Sopenharmony_ci		version 300 es
3580e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3581e5c31af7Sopenharmony_ci		both ""
3582e5c31af7Sopenharmony_ci			#version 300 es
3583e5c31af7Sopenharmony_ci			precision mediump float;
3584e5c31af7Sopenharmony_ci			${DECLARATIONS}
3585e5c31af7Sopenharmony_ci			void main()
3586e5c31af7Sopenharmony_ci			{
3587e5c31af7Sopenharmony_ci				#define VAL 4
3588e5c31af7Sopenharmony_ci				#if (VAL > 4)
3589e5c31af7Sopenharmony_ci					out0 = 0.0;
3590e5c31af7Sopenharmony_ci				#else
3591e5c31af7Sopenharmony_ci					out0 = 1.0;
3592e5c31af7Sopenharmony_ci				#endif
3593e5c31af7Sopenharmony_ci				${OUTPUT}
3594e5c31af7Sopenharmony_ci			}
3595e5c31af7Sopenharmony_ci		""
3596e5c31af7Sopenharmony_ci	end
3597e5c31af7Sopenharmony_ci
3598e5c31af7Sopenharmony_ci	case eval_basic_0
3599e5c31af7Sopenharmony_ci		version 300 es
3600e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3601e5c31af7Sopenharmony_ci		both ""
3602e5c31af7Sopenharmony_ci			#version 300 es
3603e5c31af7Sopenharmony_ci			precision mediump float;
3604e5c31af7Sopenharmony_ci			${DECLARATIONS}
3605e5c31af7Sopenharmony_ci			void main()
3606e5c31af7Sopenharmony_ci			{
3607e5c31af7Sopenharmony_ci				#if -4 + 5 == 1
3608e5c31af7Sopenharmony_ci					out0 = 1.0;
3609e5c31af7Sopenharmony_ci				#else
3610e5c31af7Sopenharmony_ci					out0 = 0.0;
3611e5c31af7Sopenharmony_ci				#endif
3612e5c31af7Sopenharmony_ci				${OUTPUT}
3613e5c31af7Sopenharmony_ci			}
3614e5c31af7Sopenharmony_ci		""
3615e5c31af7Sopenharmony_ci	end
3616e5c31af7Sopenharmony_ci
3617e5c31af7Sopenharmony_ci	case eval_basic_1
3618e5c31af7Sopenharmony_ci		version 300 es
3619e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3620e5c31af7Sopenharmony_ci		both ""
3621e5c31af7Sopenharmony_ci			#version 300 es
3622e5c31af7Sopenharmony_ci			precision mediump float;
3623e5c31af7Sopenharmony_ci			${DECLARATIONS}
3624e5c31af7Sopenharmony_ci			void main()
3625e5c31af7Sopenharmony_ci			{
3626e5c31af7Sopenharmony_ci				#if (2 * 2) - 3 >= 0
3627e5c31af7Sopenharmony_ci					out0 = 1.0;
3628e5c31af7Sopenharmony_ci				#else
3629e5c31af7Sopenharmony_ci					out0 = 0.0;
3630e5c31af7Sopenharmony_ci				#endif
3631e5c31af7Sopenharmony_ci				${OUTPUT}
3632e5c31af7Sopenharmony_ci			}
3633e5c31af7Sopenharmony_ci		""
3634e5c31af7Sopenharmony_ci	end
3635e5c31af7Sopenharmony_ci
3636e5c31af7Sopenharmony_ci	case eval_simple_precedence_0
3637e5c31af7Sopenharmony_ci		version 300 es
3638e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3639e5c31af7Sopenharmony_ci		both ""
3640e5c31af7Sopenharmony_ci			#version 300 es
3641e5c31af7Sopenharmony_ci			precision mediump float;
3642e5c31af7Sopenharmony_ci			${DECLARATIONS}
3643e5c31af7Sopenharmony_ci			void main()
3644e5c31af7Sopenharmony_ci			{
3645e5c31af7Sopenharmony_ci				#if 2 * 3 - 3 == 3
3646e5c31af7Sopenharmony_ci					out0 = 1.0;
3647e5c31af7Sopenharmony_ci				#else
3648e5c31af7Sopenharmony_ci					out0 = 0.0;
3649e5c31af7Sopenharmony_ci				#endif
3650e5c31af7Sopenharmony_ci				${OUTPUT}
3651e5c31af7Sopenharmony_ci			}
3652e5c31af7Sopenharmony_ci		""
3653e5c31af7Sopenharmony_ci	end
3654e5c31af7Sopenharmony_ci
3655e5c31af7Sopenharmony_ci	case eval_simple_precedence_1
3656e5c31af7Sopenharmony_ci		version 300 es
3657e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3658e5c31af7Sopenharmony_ci		both ""
3659e5c31af7Sopenharmony_ci			#version 300 es
3660e5c31af7Sopenharmony_ci			precision mediump float;
3661e5c31af7Sopenharmony_ci			${DECLARATIONS}
3662e5c31af7Sopenharmony_ci			void main()
3663e5c31af7Sopenharmony_ci			{
3664e5c31af7Sopenharmony_ci				#if 2 - 2 / 2 == 1
3665e5c31af7Sopenharmony_ci					out0 = 1.0;
3666e5c31af7Sopenharmony_ci				#else
3667e5c31af7Sopenharmony_ci					out0 = 0.0;
3668e5c31af7Sopenharmony_ci				#endif
3669e5c31af7Sopenharmony_ci				${OUTPUT}
3670e5c31af7Sopenharmony_ci			}
3671e5c31af7Sopenharmony_ci		""
3672e5c31af7Sopenharmony_ci	end
3673e5c31af7Sopenharmony_ci
3674e5c31af7Sopenharmony_ciend # expressions
3675e5c31af7Sopenharmony_ci
3676e5c31af7Sopenharmony_cigroup invalid_expressions "Invalid Expression Tests"
3677e5c31af7Sopenharmony_ci
3678e5c31af7Sopenharmony_ci	case invalid_unary_expr
3679e5c31af7Sopenharmony_ci		version 300 es
3680e5c31af7Sopenharmony_ci		expect compile_fail
3681e5c31af7Sopenharmony_ci		both ""
3682e5c31af7Sopenharmony_ci			#version 300 es
3683e5c31af7Sopenharmony_ci			precision mediump float;
3684e5c31af7Sopenharmony_ci			${DECLARATIONS}
3685e5c31af7Sopenharmony_ci			void main()
3686e5c31af7Sopenharmony_ci			{
3687e5c31af7Sopenharmony_ci			#if !
3688e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3689e5c31af7Sopenharmony_ci			}
3690e5c31af7Sopenharmony_ci		""
3691e5c31af7Sopenharmony_ci	end
3692e5c31af7Sopenharmony_ci
3693e5c31af7Sopenharmony_ci	case invalid_binary_expr
3694e5c31af7Sopenharmony_ci		version 300 es
3695e5c31af7Sopenharmony_ci		expect compile_fail
3696e5c31af7Sopenharmony_ci		both ""
3697e5c31af7Sopenharmony_ci			#version 300 es
3698e5c31af7Sopenharmony_ci			precision mediump float;
3699e5c31af7Sopenharmony_ci			${DECLARATIONS}
3700e5c31af7Sopenharmony_ci			void main()
3701e5c31af7Sopenharmony_ci			{
3702e5c31af7Sopenharmony_ci			#if 3+4+
3703e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3704e5c31af7Sopenharmony_ci			}
3705e5c31af7Sopenharmony_ci		""
3706e5c31af7Sopenharmony_ci	end
3707e5c31af7Sopenharmony_ci
3708e5c31af7Sopenharmony_ci	case missing_expr
3709e5c31af7Sopenharmony_ci		version 300 es
3710e5c31af7Sopenharmony_ci		expect compile_fail
3711e5c31af7Sopenharmony_ci		both ""
3712e5c31af7Sopenharmony_ci			#version 300 es
3713e5c31af7Sopenharmony_ci			precision mediump float;
3714e5c31af7Sopenharmony_ci			${DECLARATIONS}
3715e5c31af7Sopenharmony_ci			void main()
3716e5c31af7Sopenharmony_ci			{
3717e5c31af7Sopenharmony_ci			#if
3718e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3719e5c31af7Sopenharmony_ci			}
3720e5c31af7Sopenharmony_ci		""
3721e5c31af7Sopenharmony_ci	end
3722e5c31af7Sopenharmony_ci
3723e5c31af7Sopenharmony_ci	case invalid_expr_1
3724e5c31af7Sopenharmony_ci		version 300 es
3725e5c31af7Sopenharmony_ci		expect compile_fail
3726e5c31af7Sopenharmony_ci		both ""
3727e5c31af7Sopenharmony_ci			#version 300 es
3728e5c31af7Sopenharmony_ci			precision mediump float;
3729e5c31af7Sopenharmony_ci			${DECLARATIONS}
3730e5c31af7Sopenharmony_ci			void main()
3731e5c31af7Sopenharmony_ci			{
3732e5c31af7Sopenharmony_ci			#if 4 4
3733e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3734e5c31af7Sopenharmony_ci			}
3735e5c31af7Sopenharmony_ci		""
3736e5c31af7Sopenharmony_ci	end
3737e5c31af7Sopenharmony_ci
3738e5c31af7Sopenharmony_ci	case invalid_expr_2
3739e5c31af7Sopenharmony_ci		version 300 es
3740e5c31af7Sopenharmony_ci		expect compile_fail
3741e5c31af7Sopenharmony_ci		both ""
3742e5c31af7Sopenharmony_ci			#version 300 es
3743e5c31af7Sopenharmony_ci			precision mediump float;
3744e5c31af7Sopenharmony_ci			${DECLARATIONS}
3745e5c31af7Sopenharmony_ci			void main()
3746e5c31af7Sopenharmony_ci			{
3747e5c31af7Sopenharmony_ci			#if 4 * * 4
3748e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3749e5c31af7Sopenharmony_ci			}
3750e5c31af7Sopenharmony_ci		""
3751e5c31af7Sopenharmony_ci	end
3752e5c31af7Sopenharmony_ci
3753e5c31af7Sopenharmony_ci	case invalid_expr_3
3754e5c31af7Sopenharmony_ci		version 300 es
3755e5c31af7Sopenharmony_ci		expect compile_fail
3756e5c31af7Sopenharmony_ci		both ""
3757e5c31af7Sopenharmony_ci			#version 300 es
3758e5c31af7Sopenharmony_ci			precision mediump float;
3759e5c31af7Sopenharmony_ci			${DECLARATIONS}
3760e5c31af7Sopenharmony_ci			void main()
3761e5c31af7Sopenharmony_ci			{
3762e5c31af7Sopenharmony_ci			#if (4)(4)
3763e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3764e5c31af7Sopenharmony_ci			}
3765e5c31af7Sopenharmony_ci		""
3766e5c31af7Sopenharmony_ci	end
3767e5c31af7Sopenharmony_ci
3768e5c31af7Sopenharmony_ci	case unopened_parenthesis
3769e5c31af7Sopenharmony_ci		version 300 es
3770e5c31af7Sopenharmony_ci		expect compile_fail
3771e5c31af7Sopenharmony_ci		both ""
3772e5c31af7Sopenharmony_ci			#version 300 es
3773e5c31af7Sopenharmony_ci			precision mediump float;
3774e5c31af7Sopenharmony_ci			${DECLARATIONS}
3775e5c31af7Sopenharmony_ci			void main()
3776e5c31af7Sopenharmony_ci			{
3777e5c31af7Sopenharmony_ci			#if 4)
3778e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3779e5c31af7Sopenharmony_ci			}
3780e5c31af7Sopenharmony_ci		""
3781e5c31af7Sopenharmony_ci	end
3782e5c31af7Sopenharmony_ci
3783e5c31af7Sopenharmony_ci	case unclosed_parenthesis
3784e5c31af7Sopenharmony_ci		version 300 es
3785e5c31af7Sopenharmony_ci		expect compile_fail
3786e5c31af7Sopenharmony_ci		both ""
3787e5c31af7Sopenharmony_ci			#version 300 es
3788e5c31af7Sopenharmony_ci			precision mediump float;
3789e5c31af7Sopenharmony_ci			${DECLARATIONS}
3790e5c31af7Sopenharmony_ci			void main()
3791e5c31af7Sopenharmony_ci			{
3792e5c31af7Sopenharmony_ci			#if ((4 + 7)
3793e5c31af7Sopenharmony_ci				${POSITION_FRAG_COLOR} = vec4(1.0);
3794e5c31af7Sopenharmony_ci			}
3795e5c31af7Sopenharmony_ci		""
3796e5c31af7Sopenharmony_ci	end
3797e5c31af7Sopenharmony_ci
3798e5c31af7Sopenharmony_ciend # invalid_expressions
3799e5c31af7Sopenharmony_ci
3800e5c31af7Sopenharmony_cigroup operator_precedence "Operator precedence"
3801e5c31af7Sopenharmony_ci
3802e5c31af7Sopenharmony_ci
3803e5c31af7Sopenharmony_ci	case modulo_vs_not
3804e5c31af7Sopenharmony_ci		version 300 es
3805e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3806e5c31af7Sopenharmony_ci		both ""
3807e5c31af7Sopenharmony_ci			#version 300 es
3808e5c31af7Sopenharmony_ci			#if ( 8 % ! 0 ) == 0
3809e5c31af7Sopenharmony_ci			#define VAL 1.0
3810e5c31af7Sopenharmony_ci			#else
3811e5c31af7Sopenharmony_ci			#define VAL 0.0
3812e5c31af7Sopenharmony_ci			#endif
3813e5c31af7Sopenharmony_ci
3814e5c31af7Sopenharmony_ci			precision mediump float;
3815e5c31af7Sopenharmony_ci			${DECLARATIONS}
3816e5c31af7Sopenharmony_ci			void main()
3817e5c31af7Sopenharmony_ci			{
3818e5c31af7Sopenharmony_ci				out0 = VAL;
3819e5c31af7Sopenharmony_ci				${OUTPUT}
3820e5c31af7Sopenharmony_ci			}
3821e5c31af7Sopenharmony_ci		""
3822e5c31af7Sopenharmony_ci	end
3823e5c31af7Sopenharmony_ci
3824e5c31af7Sopenharmony_ci	case div_vs_not
3825e5c31af7Sopenharmony_ci		version 300 es
3826e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3827e5c31af7Sopenharmony_ci		both ""
3828e5c31af7Sopenharmony_ci			#version 300 es
3829e5c31af7Sopenharmony_ci			#if ( 8 / ! 0 ) == 8
3830e5c31af7Sopenharmony_ci			#define VAL 1.0
3831e5c31af7Sopenharmony_ci			#else
3832e5c31af7Sopenharmony_ci			#define VAL 0.0
3833e5c31af7Sopenharmony_ci			#endif
3834e5c31af7Sopenharmony_ci
3835e5c31af7Sopenharmony_ci			precision mediump float;
3836e5c31af7Sopenharmony_ci			${DECLARATIONS}
3837e5c31af7Sopenharmony_ci			void main()
3838e5c31af7Sopenharmony_ci			{
3839e5c31af7Sopenharmony_ci				out0 = VAL;
3840e5c31af7Sopenharmony_ci				${OUTPUT}
3841e5c31af7Sopenharmony_ci			}
3842e5c31af7Sopenharmony_ci		""
3843e5c31af7Sopenharmony_ci	end
3844e5c31af7Sopenharmony_ci
3845e5c31af7Sopenharmony_ci	case mul_vs_not
3846e5c31af7Sopenharmony_ci		version 300 es
3847e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3848e5c31af7Sopenharmony_ci		both ""
3849e5c31af7Sopenharmony_ci			#version 300 es
3850e5c31af7Sopenharmony_ci			#if ( 8 * ! 0 ) == 8
3851e5c31af7Sopenharmony_ci			#define VAL 1.0
3852e5c31af7Sopenharmony_ci			#else
3853e5c31af7Sopenharmony_ci			#define VAL 0.0
3854e5c31af7Sopenharmony_ci			#endif
3855e5c31af7Sopenharmony_ci
3856e5c31af7Sopenharmony_ci			precision mediump float;
3857e5c31af7Sopenharmony_ci			${DECLARATIONS}
3858e5c31af7Sopenharmony_ci			void main()
3859e5c31af7Sopenharmony_ci			{
3860e5c31af7Sopenharmony_ci				out0 = VAL;
3861e5c31af7Sopenharmony_ci				${OUTPUT}
3862e5c31af7Sopenharmony_ci			}
3863e5c31af7Sopenharmony_ci		""
3864e5c31af7Sopenharmony_ci	end
3865e5c31af7Sopenharmony_ci
3866e5c31af7Sopenharmony_ci	case modulo_vs_bit_invert
3867e5c31af7Sopenharmony_ci		version 300 es
3868e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3869e5c31af7Sopenharmony_ci		both ""
3870e5c31af7Sopenharmony_ci			#version 300 es
3871e5c31af7Sopenharmony_ci			#if ( 8 % ~ 4 ) == 3
3872e5c31af7Sopenharmony_ci			#define VAL 1.0
3873e5c31af7Sopenharmony_ci			#else
3874e5c31af7Sopenharmony_ci			#define VAL 0.0
3875e5c31af7Sopenharmony_ci			#endif
3876e5c31af7Sopenharmony_ci
3877e5c31af7Sopenharmony_ci			precision mediump float;
3878e5c31af7Sopenharmony_ci			${DECLARATIONS}
3879e5c31af7Sopenharmony_ci			void main()
3880e5c31af7Sopenharmony_ci			{
3881e5c31af7Sopenharmony_ci				out0 = VAL;
3882e5c31af7Sopenharmony_ci				${OUTPUT}
3883e5c31af7Sopenharmony_ci			}
3884e5c31af7Sopenharmony_ci		""
3885e5c31af7Sopenharmony_ci	end
3886e5c31af7Sopenharmony_ci
3887e5c31af7Sopenharmony_ci	case modulo_vs_minus
3888e5c31af7Sopenharmony_ci		version 300 es
3889e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3890e5c31af7Sopenharmony_ci		both ""
3891e5c31af7Sopenharmony_ci			#version 300 es
3892e5c31af7Sopenharmony_ci			#if ( 8 % - 2 ) == 0
3893e5c31af7Sopenharmony_ci			#define VAL 1.0
3894e5c31af7Sopenharmony_ci			#else
3895e5c31af7Sopenharmony_ci			#define VAL 0.0
3896e5c31af7Sopenharmony_ci			#endif
3897e5c31af7Sopenharmony_ci
3898e5c31af7Sopenharmony_ci			precision mediump float;
3899e5c31af7Sopenharmony_ci			${DECLARATIONS}
3900e5c31af7Sopenharmony_ci			void main()
3901e5c31af7Sopenharmony_ci			{
3902e5c31af7Sopenharmony_ci				out0 = VAL;
3903e5c31af7Sopenharmony_ci				${OUTPUT}
3904e5c31af7Sopenharmony_ci			}
3905e5c31af7Sopenharmony_ci		""
3906e5c31af7Sopenharmony_ci	end
3907e5c31af7Sopenharmony_ci
3908e5c31af7Sopenharmony_ci	case modulo_vs_plus
3909e5c31af7Sopenharmony_ci		version 300 es
3910e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3911e5c31af7Sopenharmony_ci		both ""
3912e5c31af7Sopenharmony_ci			#version 300 es
3913e5c31af7Sopenharmony_ci			#if ( 8 % + 2 ) == 0
3914e5c31af7Sopenharmony_ci			#define VAL 1.0
3915e5c31af7Sopenharmony_ci			#else
3916e5c31af7Sopenharmony_ci			#define VAL 0.0
3917e5c31af7Sopenharmony_ci			#endif
3918e5c31af7Sopenharmony_ci
3919e5c31af7Sopenharmony_ci			precision mediump float;
3920e5c31af7Sopenharmony_ci			${DECLARATIONS}
3921e5c31af7Sopenharmony_ci			void main()
3922e5c31af7Sopenharmony_ci			{
3923e5c31af7Sopenharmony_ci				out0 = VAL;
3924e5c31af7Sopenharmony_ci				${OUTPUT}
3925e5c31af7Sopenharmony_ci			}
3926e5c31af7Sopenharmony_ci		""
3927e5c31af7Sopenharmony_ci	end
3928e5c31af7Sopenharmony_ci
3929e5c31af7Sopenharmony_ci	case div_vs_bit_invert
3930e5c31af7Sopenharmony_ci		version 300 es
3931e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3932e5c31af7Sopenharmony_ci		both ""
3933e5c31af7Sopenharmony_ci			#version 300 es
3934e5c31af7Sopenharmony_ci			#if ( 8 / ~ 2 ) == -2
3935e5c31af7Sopenharmony_ci			#define VAL 1.0
3936e5c31af7Sopenharmony_ci			#else
3937e5c31af7Sopenharmony_ci			#define VAL 0.0
3938e5c31af7Sopenharmony_ci			#endif
3939e5c31af7Sopenharmony_ci
3940e5c31af7Sopenharmony_ci			precision mediump float;
3941e5c31af7Sopenharmony_ci			${DECLARATIONS}
3942e5c31af7Sopenharmony_ci			void main()
3943e5c31af7Sopenharmony_ci			{
3944e5c31af7Sopenharmony_ci				out0 = VAL;
3945e5c31af7Sopenharmony_ci				${OUTPUT}
3946e5c31af7Sopenharmony_ci			}
3947e5c31af7Sopenharmony_ci		""
3948e5c31af7Sopenharmony_ci	end
3949e5c31af7Sopenharmony_ci
3950e5c31af7Sopenharmony_ci	case div_vs_minus
3951e5c31af7Sopenharmony_ci		version 300 es
3952e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3953e5c31af7Sopenharmony_ci		both ""
3954e5c31af7Sopenharmony_ci			#version 300 es
3955e5c31af7Sopenharmony_ci			#if ( 8 / - 2 ) == -4
3956e5c31af7Sopenharmony_ci			#define VAL 1.0
3957e5c31af7Sopenharmony_ci			#else
3958e5c31af7Sopenharmony_ci			#define VAL 0.0
3959e5c31af7Sopenharmony_ci			#endif
3960e5c31af7Sopenharmony_ci
3961e5c31af7Sopenharmony_ci			precision mediump float;
3962e5c31af7Sopenharmony_ci			${DECLARATIONS}
3963e5c31af7Sopenharmony_ci			void main()
3964e5c31af7Sopenharmony_ci			{
3965e5c31af7Sopenharmony_ci				out0 = VAL;
3966e5c31af7Sopenharmony_ci				${OUTPUT}
3967e5c31af7Sopenharmony_ci			}
3968e5c31af7Sopenharmony_ci		""
3969e5c31af7Sopenharmony_ci	end
3970e5c31af7Sopenharmony_ci
3971e5c31af7Sopenharmony_ci	case div_vs_plus
3972e5c31af7Sopenharmony_ci		version 300 es
3973e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3974e5c31af7Sopenharmony_ci		both ""
3975e5c31af7Sopenharmony_ci			#version 300 es
3976e5c31af7Sopenharmony_ci			#if ( 8 / + 2 ) == 4
3977e5c31af7Sopenharmony_ci			#define VAL 1.0
3978e5c31af7Sopenharmony_ci			#else
3979e5c31af7Sopenharmony_ci			#define VAL 0.0
3980e5c31af7Sopenharmony_ci			#endif
3981e5c31af7Sopenharmony_ci
3982e5c31af7Sopenharmony_ci			precision mediump float;
3983e5c31af7Sopenharmony_ci			${DECLARATIONS}
3984e5c31af7Sopenharmony_ci			void main()
3985e5c31af7Sopenharmony_ci			{
3986e5c31af7Sopenharmony_ci				out0 = VAL;
3987e5c31af7Sopenharmony_ci				${OUTPUT}
3988e5c31af7Sopenharmony_ci			}
3989e5c31af7Sopenharmony_ci		""
3990e5c31af7Sopenharmony_ci	end
3991e5c31af7Sopenharmony_ci
3992e5c31af7Sopenharmony_ci	case mul_vs_bit_invert
3993e5c31af7Sopenharmony_ci		version 300 es
3994e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
3995e5c31af7Sopenharmony_ci		both ""
3996e5c31af7Sopenharmony_ci			#version 300 es
3997e5c31af7Sopenharmony_ci			#if ( 8 * ~ 2 ) == -24
3998e5c31af7Sopenharmony_ci			#define VAL 1.0
3999e5c31af7Sopenharmony_ci			#else
4000e5c31af7Sopenharmony_ci			#define VAL 0.0
4001e5c31af7Sopenharmony_ci			#endif
4002e5c31af7Sopenharmony_ci
4003e5c31af7Sopenharmony_ci			precision mediump float;
4004e5c31af7Sopenharmony_ci			${DECLARATIONS}
4005e5c31af7Sopenharmony_ci			void main()
4006e5c31af7Sopenharmony_ci			{
4007e5c31af7Sopenharmony_ci				out0 = VAL;
4008e5c31af7Sopenharmony_ci				${OUTPUT}
4009e5c31af7Sopenharmony_ci			}
4010e5c31af7Sopenharmony_ci		""
4011e5c31af7Sopenharmony_ci	end
4012e5c31af7Sopenharmony_ci
4013e5c31af7Sopenharmony_ci	case mul_vs_minus
4014e5c31af7Sopenharmony_ci		version 300 es
4015e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4016e5c31af7Sopenharmony_ci		both ""
4017e5c31af7Sopenharmony_ci			#version 300 es
4018e5c31af7Sopenharmony_ci			#if ( 8 * - 2 ) == -16
4019e5c31af7Sopenharmony_ci			#define VAL 1.0
4020e5c31af7Sopenharmony_ci			#else
4021e5c31af7Sopenharmony_ci			#define VAL 0.0
4022e5c31af7Sopenharmony_ci			#endif
4023e5c31af7Sopenharmony_ci
4024e5c31af7Sopenharmony_ci			precision mediump float;
4025e5c31af7Sopenharmony_ci			${DECLARATIONS}
4026e5c31af7Sopenharmony_ci			void main()
4027e5c31af7Sopenharmony_ci			{
4028e5c31af7Sopenharmony_ci				out0 = VAL;
4029e5c31af7Sopenharmony_ci				${OUTPUT}
4030e5c31af7Sopenharmony_ci			}
4031e5c31af7Sopenharmony_ci		""
4032e5c31af7Sopenharmony_ci	end
4033e5c31af7Sopenharmony_ci
4034e5c31af7Sopenharmony_ci	case mul_vs_plus
4035e5c31af7Sopenharmony_ci		version 300 es
4036e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4037e5c31af7Sopenharmony_ci		both ""
4038e5c31af7Sopenharmony_ci			#version 300 es
4039e5c31af7Sopenharmony_ci			#if ( 8 * + 2 ) == 16
4040e5c31af7Sopenharmony_ci			#define VAL 1.0
4041e5c31af7Sopenharmony_ci			#else
4042e5c31af7Sopenharmony_ci			#define VAL 0.0
4043e5c31af7Sopenharmony_ci			#endif
4044e5c31af7Sopenharmony_ci
4045e5c31af7Sopenharmony_ci			precision mediump float;
4046e5c31af7Sopenharmony_ci			${DECLARATIONS}
4047e5c31af7Sopenharmony_ci			void main()
4048e5c31af7Sopenharmony_ci			{
4049e5c31af7Sopenharmony_ci				out0 = VAL;
4050e5c31af7Sopenharmony_ci				${OUTPUT}
4051e5c31af7Sopenharmony_ci			}
4052e5c31af7Sopenharmony_ci		""
4053e5c31af7Sopenharmony_ci	end
4054e5c31af7Sopenharmony_ci
4055e5c31af7Sopenharmony_ci	case sub_vs_modulo
4056e5c31af7Sopenharmony_ci		version 300 es
4057e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4058e5c31af7Sopenharmony_ci		both ""
4059e5c31af7Sopenharmony_ci			#version 300 es
4060e5c31af7Sopenharmony_ci			#if ( 8 - 3 % 2 ) == 7
4061e5c31af7Sopenharmony_ci			#define VAL 1.0
4062e5c31af7Sopenharmony_ci			#else
4063e5c31af7Sopenharmony_ci			#define VAL 0.0
4064e5c31af7Sopenharmony_ci			#endif
4065e5c31af7Sopenharmony_ci
4066e5c31af7Sopenharmony_ci			precision mediump float;
4067e5c31af7Sopenharmony_ci			${DECLARATIONS}
4068e5c31af7Sopenharmony_ci			void main()
4069e5c31af7Sopenharmony_ci			{
4070e5c31af7Sopenharmony_ci				out0 = VAL;
4071e5c31af7Sopenharmony_ci				${OUTPUT}
4072e5c31af7Sopenharmony_ci			}
4073e5c31af7Sopenharmony_ci		""
4074e5c31af7Sopenharmony_ci	end
4075e5c31af7Sopenharmony_ci
4076e5c31af7Sopenharmony_ci	case sub_vs_div
4077e5c31af7Sopenharmony_ci		version 300 es
4078e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4079e5c31af7Sopenharmony_ci		both ""
4080e5c31af7Sopenharmony_ci			#version 300 es
4081e5c31af7Sopenharmony_ci			#if ( 8 - 3 / 2 ) == 7
4082e5c31af7Sopenharmony_ci			#define VAL 1.0
4083e5c31af7Sopenharmony_ci			#else
4084e5c31af7Sopenharmony_ci			#define VAL 0.0
4085e5c31af7Sopenharmony_ci			#endif
4086e5c31af7Sopenharmony_ci
4087e5c31af7Sopenharmony_ci			precision mediump float;
4088e5c31af7Sopenharmony_ci			${DECLARATIONS}
4089e5c31af7Sopenharmony_ci			void main()
4090e5c31af7Sopenharmony_ci			{
4091e5c31af7Sopenharmony_ci				out0 = VAL;
4092e5c31af7Sopenharmony_ci				${OUTPUT}
4093e5c31af7Sopenharmony_ci			}
4094e5c31af7Sopenharmony_ci		""
4095e5c31af7Sopenharmony_ci	end
4096e5c31af7Sopenharmony_ci
4097e5c31af7Sopenharmony_ci	case sub_vs_mul
4098e5c31af7Sopenharmony_ci		version 300 es
4099e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4100e5c31af7Sopenharmony_ci		both ""
4101e5c31af7Sopenharmony_ci			#version 300 es
4102e5c31af7Sopenharmony_ci			#if ( 8 - 3 * 2 ) == 2
4103e5c31af7Sopenharmony_ci			#define VAL 1.0
4104e5c31af7Sopenharmony_ci			#else
4105e5c31af7Sopenharmony_ci			#define VAL 0.0
4106e5c31af7Sopenharmony_ci			#endif
4107e5c31af7Sopenharmony_ci
4108e5c31af7Sopenharmony_ci			precision mediump float;
4109e5c31af7Sopenharmony_ci			${DECLARATIONS}
4110e5c31af7Sopenharmony_ci			void main()
4111e5c31af7Sopenharmony_ci			{
4112e5c31af7Sopenharmony_ci				out0 = VAL;
4113e5c31af7Sopenharmony_ci				${OUTPUT}
4114e5c31af7Sopenharmony_ci			}
4115e5c31af7Sopenharmony_ci		""
4116e5c31af7Sopenharmony_ci	end
4117e5c31af7Sopenharmony_ci
4118e5c31af7Sopenharmony_ci	case add_vs_modulo
4119e5c31af7Sopenharmony_ci		version 300 es
4120e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4121e5c31af7Sopenharmony_ci		both ""
4122e5c31af7Sopenharmony_ci			#version 300 es
4123e5c31af7Sopenharmony_ci			#if ( 8 + 3 % 2 ) == 9
4124e5c31af7Sopenharmony_ci			#define VAL 1.0
4125e5c31af7Sopenharmony_ci			#else
4126e5c31af7Sopenharmony_ci			#define VAL 0.0
4127e5c31af7Sopenharmony_ci			#endif
4128e5c31af7Sopenharmony_ci
4129e5c31af7Sopenharmony_ci			precision mediump float;
4130e5c31af7Sopenharmony_ci			${DECLARATIONS}
4131e5c31af7Sopenharmony_ci			void main()
4132e5c31af7Sopenharmony_ci			{
4133e5c31af7Sopenharmony_ci				out0 = VAL;
4134e5c31af7Sopenharmony_ci				${OUTPUT}
4135e5c31af7Sopenharmony_ci			}
4136e5c31af7Sopenharmony_ci		""
4137e5c31af7Sopenharmony_ci	end
4138e5c31af7Sopenharmony_ci
4139e5c31af7Sopenharmony_ci	case add_vs_div
4140e5c31af7Sopenharmony_ci		version 300 es
4141e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4142e5c31af7Sopenharmony_ci		both ""
4143e5c31af7Sopenharmony_ci			#version 300 es
4144e5c31af7Sopenharmony_ci			#if ( 8 + 3 / 2 ) == 9
4145e5c31af7Sopenharmony_ci			#define VAL 1.0
4146e5c31af7Sopenharmony_ci			#else
4147e5c31af7Sopenharmony_ci			#define VAL 0.0
4148e5c31af7Sopenharmony_ci			#endif
4149e5c31af7Sopenharmony_ci
4150e5c31af7Sopenharmony_ci			precision mediump float;
4151e5c31af7Sopenharmony_ci			${DECLARATIONS}
4152e5c31af7Sopenharmony_ci			void main()
4153e5c31af7Sopenharmony_ci			{
4154e5c31af7Sopenharmony_ci				out0 = VAL;
4155e5c31af7Sopenharmony_ci				${OUTPUT}
4156e5c31af7Sopenharmony_ci			}
4157e5c31af7Sopenharmony_ci		""
4158e5c31af7Sopenharmony_ci	end
4159e5c31af7Sopenharmony_ci
4160e5c31af7Sopenharmony_ci	case add_vs_mul
4161e5c31af7Sopenharmony_ci		version 300 es
4162e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4163e5c31af7Sopenharmony_ci		both ""
4164e5c31af7Sopenharmony_ci			#version 300 es
4165e5c31af7Sopenharmony_ci			#if ( 8 + 3 * 2 ) == 14
4166e5c31af7Sopenharmony_ci			#define VAL 1.0
4167e5c31af7Sopenharmony_ci			#else
4168e5c31af7Sopenharmony_ci			#define VAL 0.0
4169e5c31af7Sopenharmony_ci			#endif
4170e5c31af7Sopenharmony_ci
4171e5c31af7Sopenharmony_ci			precision mediump float;
4172e5c31af7Sopenharmony_ci			${DECLARATIONS}
4173e5c31af7Sopenharmony_ci			void main()
4174e5c31af7Sopenharmony_ci			{
4175e5c31af7Sopenharmony_ci				out0 = VAL;
4176e5c31af7Sopenharmony_ci				${OUTPUT}
4177e5c31af7Sopenharmony_ci			}
4178e5c31af7Sopenharmony_ci		""
4179e5c31af7Sopenharmony_ci	end
4180e5c31af7Sopenharmony_ci
4181e5c31af7Sopenharmony_ci	case rshift_vs_sub
4182e5c31af7Sopenharmony_ci		version 300 es
4183e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4184e5c31af7Sopenharmony_ci		both ""
4185e5c31af7Sopenharmony_ci			#version 300 es
4186e5c31af7Sopenharmony_ci			#if ( 8 >> 3 - 2 ) == 4
4187e5c31af7Sopenharmony_ci			#define VAL 1.0
4188e5c31af7Sopenharmony_ci			#else
4189e5c31af7Sopenharmony_ci			#define VAL 0.0
4190e5c31af7Sopenharmony_ci			#endif
4191e5c31af7Sopenharmony_ci
4192e5c31af7Sopenharmony_ci			precision mediump float;
4193e5c31af7Sopenharmony_ci			${DECLARATIONS}
4194e5c31af7Sopenharmony_ci			void main()
4195e5c31af7Sopenharmony_ci			{
4196e5c31af7Sopenharmony_ci				out0 = VAL;
4197e5c31af7Sopenharmony_ci				${OUTPUT}
4198e5c31af7Sopenharmony_ci			}
4199e5c31af7Sopenharmony_ci		""
4200e5c31af7Sopenharmony_ci	end
4201e5c31af7Sopenharmony_ci
4202e5c31af7Sopenharmony_ci	case rshift_vs_add
4203e5c31af7Sopenharmony_ci		version 300 es
4204e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4205e5c31af7Sopenharmony_ci		both ""
4206e5c31af7Sopenharmony_ci			#version 300 es
4207e5c31af7Sopenharmony_ci			#if ( 8 >> 3 + 2 ) == 0
4208e5c31af7Sopenharmony_ci			#define VAL 1.0
4209e5c31af7Sopenharmony_ci			#else
4210e5c31af7Sopenharmony_ci			#define VAL 0.0
4211e5c31af7Sopenharmony_ci			#endif
4212e5c31af7Sopenharmony_ci
4213e5c31af7Sopenharmony_ci			precision mediump float;
4214e5c31af7Sopenharmony_ci			${DECLARATIONS}
4215e5c31af7Sopenharmony_ci			void main()
4216e5c31af7Sopenharmony_ci			{
4217e5c31af7Sopenharmony_ci				out0 = VAL;
4218e5c31af7Sopenharmony_ci				${OUTPUT}
4219e5c31af7Sopenharmony_ci			}
4220e5c31af7Sopenharmony_ci		""
4221e5c31af7Sopenharmony_ci	end
4222e5c31af7Sopenharmony_ci
4223e5c31af7Sopenharmony_ci	case lshift_vs_sub
4224e5c31af7Sopenharmony_ci		version 300 es
4225e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4226e5c31af7Sopenharmony_ci		both ""
4227e5c31af7Sopenharmony_ci			#version 300 es
4228e5c31af7Sopenharmony_ci			#if ( 8 << 3 - 2 ) == 16
4229e5c31af7Sopenharmony_ci			#define VAL 1.0
4230e5c31af7Sopenharmony_ci			#else
4231e5c31af7Sopenharmony_ci			#define VAL 0.0
4232e5c31af7Sopenharmony_ci			#endif
4233e5c31af7Sopenharmony_ci
4234e5c31af7Sopenharmony_ci			precision mediump float;
4235e5c31af7Sopenharmony_ci			${DECLARATIONS}
4236e5c31af7Sopenharmony_ci			void main()
4237e5c31af7Sopenharmony_ci			{
4238e5c31af7Sopenharmony_ci				out0 = VAL;
4239e5c31af7Sopenharmony_ci				${OUTPUT}
4240e5c31af7Sopenharmony_ci			}
4241e5c31af7Sopenharmony_ci		""
4242e5c31af7Sopenharmony_ci	end
4243e5c31af7Sopenharmony_ci
4244e5c31af7Sopenharmony_ci	case lshift_vs_add
4245e5c31af7Sopenharmony_ci		version 300 es
4246e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4247e5c31af7Sopenharmony_ci		both ""
4248e5c31af7Sopenharmony_ci			#version 300 es
4249e5c31af7Sopenharmony_ci			#if ( 8 << 3 + 2 ) == 256
4250e5c31af7Sopenharmony_ci			#define VAL 1.0
4251e5c31af7Sopenharmony_ci			#else
4252e5c31af7Sopenharmony_ci			#define VAL 0.0
4253e5c31af7Sopenharmony_ci			#endif
4254e5c31af7Sopenharmony_ci
4255e5c31af7Sopenharmony_ci			precision mediump float;
4256e5c31af7Sopenharmony_ci			${DECLARATIONS}
4257e5c31af7Sopenharmony_ci			void main()
4258e5c31af7Sopenharmony_ci			{
4259e5c31af7Sopenharmony_ci				out0 = VAL;
4260e5c31af7Sopenharmony_ci				${OUTPUT}
4261e5c31af7Sopenharmony_ci			}
4262e5c31af7Sopenharmony_ci		""
4263e5c31af7Sopenharmony_ci	end
4264e5c31af7Sopenharmony_ci
4265e5c31af7Sopenharmony_ci	case greater_or_equal_vs_rshift
4266e5c31af7Sopenharmony_ci		version 300 es
4267e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4268e5c31af7Sopenharmony_ci		both ""
4269e5c31af7Sopenharmony_ci			#version 300 es
4270e5c31af7Sopenharmony_ci			#if ( 8 >= 3 >> 2 ) == 1
4271e5c31af7Sopenharmony_ci			#define VAL 1.0
4272e5c31af7Sopenharmony_ci			#else
4273e5c31af7Sopenharmony_ci			#define VAL 0.0
4274e5c31af7Sopenharmony_ci			#endif
4275e5c31af7Sopenharmony_ci
4276e5c31af7Sopenharmony_ci			precision mediump float;
4277e5c31af7Sopenharmony_ci			${DECLARATIONS}
4278e5c31af7Sopenharmony_ci			void main()
4279e5c31af7Sopenharmony_ci			{
4280e5c31af7Sopenharmony_ci				out0 = VAL;
4281e5c31af7Sopenharmony_ci				${OUTPUT}
4282e5c31af7Sopenharmony_ci			}
4283e5c31af7Sopenharmony_ci		""
4284e5c31af7Sopenharmony_ci	end
4285e5c31af7Sopenharmony_ci
4286e5c31af7Sopenharmony_ci	case greater_or_equal_vs_lshift
4287e5c31af7Sopenharmony_ci		version 300 es
4288e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4289e5c31af7Sopenharmony_ci		both ""
4290e5c31af7Sopenharmony_ci			#version 300 es
4291e5c31af7Sopenharmony_ci			#if ( 8 >= 3 << 2 ) == 0
4292e5c31af7Sopenharmony_ci			#define VAL 1.0
4293e5c31af7Sopenharmony_ci			#else
4294e5c31af7Sopenharmony_ci			#define VAL 0.0
4295e5c31af7Sopenharmony_ci			#endif
4296e5c31af7Sopenharmony_ci
4297e5c31af7Sopenharmony_ci			precision mediump float;
4298e5c31af7Sopenharmony_ci			${DECLARATIONS}
4299e5c31af7Sopenharmony_ci			void main()
4300e5c31af7Sopenharmony_ci			{
4301e5c31af7Sopenharmony_ci				out0 = VAL;
4302e5c31af7Sopenharmony_ci				${OUTPUT}
4303e5c31af7Sopenharmony_ci			}
4304e5c31af7Sopenharmony_ci		""
4305e5c31af7Sopenharmony_ci	end
4306e5c31af7Sopenharmony_ci
4307e5c31af7Sopenharmony_ci	case less_or_equal_vs_rshift
4308e5c31af7Sopenharmony_ci		version 300 es
4309e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4310e5c31af7Sopenharmony_ci		both ""
4311e5c31af7Sopenharmony_ci			#version 300 es
4312e5c31af7Sopenharmony_ci			#if ( 8 <= 3 >> 2 ) == 0
4313e5c31af7Sopenharmony_ci			#define VAL 1.0
4314e5c31af7Sopenharmony_ci			#else
4315e5c31af7Sopenharmony_ci			#define VAL 0.0
4316e5c31af7Sopenharmony_ci			#endif
4317e5c31af7Sopenharmony_ci
4318e5c31af7Sopenharmony_ci			precision mediump float;
4319e5c31af7Sopenharmony_ci			${DECLARATIONS}
4320e5c31af7Sopenharmony_ci			void main()
4321e5c31af7Sopenharmony_ci			{
4322e5c31af7Sopenharmony_ci				out0 = VAL;
4323e5c31af7Sopenharmony_ci				${OUTPUT}
4324e5c31af7Sopenharmony_ci			}
4325e5c31af7Sopenharmony_ci		""
4326e5c31af7Sopenharmony_ci	end
4327e5c31af7Sopenharmony_ci
4328e5c31af7Sopenharmony_ci	case less_or_equal_vs_lshift
4329e5c31af7Sopenharmony_ci		version 300 es
4330e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4331e5c31af7Sopenharmony_ci		both ""
4332e5c31af7Sopenharmony_ci			#version 300 es
4333e5c31af7Sopenharmony_ci			#if ( 8 <= 3 << 2 ) == 1
4334e5c31af7Sopenharmony_ci			#define VAL 1.0
4335e5c31af7Sopenharmony_ci			#else
4336e5c31af7Sopenharmony_ci			#define VAL 0.0
4337e5c31af7Sopenharmony_ci			#endif
4338e5c31af7Sopenharmony_ci
4339e5c31af7Sopenharmony_ci			precision mediump float;
4340e5c31af7Sopenharmony_ci			${DECLARATIONS}
4341e5c31af7Sopenharmony_ci			void main()
4342e5c31af7Sopenharmony_ci			{
4343e5c31af7Sopenharmony_ci				out0 = VAL;
4344e5c31af7Sopenharmony_ci				${OUTPUT}
4345e5c31af7Sopenharmony_ci			}
4346e5c31af7Sopenharmony_ci		""
4347e5c31af7Sopenharmony_ci	end
4348e5c31af7Sopenharmony_ci
4349e5c31af7Sopenharmony_ci	case greater_vs_rshift
4350e5c31af7Sopenharmony_ci		version 300 es
4351e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4352e5c31af7Sopenharmony_ci		both ""
4353e5c31af7Sopenharmony_ci			#version 300 es
4354e5c31af7Sopenharmony_ci			#if ( 8 > 3 >> 2 ) == 1
4355e5c31af7Sopenharmony_ci			#define VAL 1.0
4356e5c31af7Sopenharmony_ci			#else
4357e5c31af7Sopenharmony_ci			#define VAL 0.0
4358e5c31af7Sopenharmony_ci			#endif
4359e5c31af7Sopenharmony_ci
4360e5c31af7Sopenharmony_ci			precision mediump float;
4361e5c31af7Sopenharmony_ci			${DECLARATIONS}
4362e5c31af7Sopenharmony_ci			void main()
4363e5c31af7Sopenharmony_ci			{
4364e5c31af7Sopenharmony_ci				out0 = VAL;
4365e5c31af7Sopenharmony_ci				${OUTPUT}
4366e5c31af7Sopenharmony_ci			}
4367e5c31af7Sopenharmony_ci		""
4368e5c31af7Sopenharmony_ci	end
4369e5c31af7Sopenharmony_ci
4370e5c31af7Sopenharmony_ci	case greater_vs_lshift
4371e5c31af7Sopenharmony_ci		version 300 es
4372e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4373e5c31af7Sopenharmony_ci		both ""
4374e5c31af7Sopenharmony_ci			#version 300 es
4375e5c31af7Sopenharmony_ci			#if ( 8 > 3 << 2 ) == 0
4376e5c31af7Sopenharmony_ci			#define VAL 1.0
4377e5c31af7Sopenharmony_ci			#else
4378e5c31af7Sopenharmony_ci			#define VAL 0.0
4379e5c31af7Sopenharmony_ci			#endif
4380e5c31af7Sopenharmony_ci
4381e5c31af7Sopenharmony_ci			precision mediump float;
4382e5c31af7Sopenharmony_ci			${DECLARATIONS}
4383e5c31af7Sopenharmony_ci			void main()
4384e5c31af7Sopenharmony_ci			{
4385e5c31af7Sopenharmony_ci				out0 = VAL;
4386e5c31af7Sopenharmony_ci				${OUTPUT}
4387e5c31af7Sopenharmony_ci			}
4388e5c31af7Sopenharmony_ci		""
4389e5c31af7Sopenharmony_ci	end
4390e5c31af7Sopenharmony_ci
4391e5c31af7Sopenharmony_ci	case less_vs_rshift
4392e5c31af7Sopenharmony_ci		version 300 es
4393e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4394e5c31af7Sopenharmony_ci		both ""
4395e5c31af7Sopenharmony_ci			#version 300 es
4396e5c31af7Sopenharmony_ci			#if ( 8 < 3 >> 2 ) == 0
4397e5c31af7Sopenharmony_ci			#define VAL 1.0
4398e5c31af7Sopenharmony_ci			#else
4399e5c31af7Sopenharmony_ci			#define VAL 0.0
4400e5c31af7Sopenharmony_ci			#endif
4401e5c31af7Sopenharmony_ci
4402e5c31af7Sopenharmony_ci			precision mediump float;
4403e5c31af7Sopenharmony_ci			${DECLARATIONS}
4404e5c31af7Sopenharmony_ci			void main()
4405e5c31af7Sopenharmony_ci			{
4406e5c31af7Sopenharmony_ci				out0 = VAL;
4407e5c31af7Sopenharmony_ci				${OUTPUT}
4408e5c31af7Sopenharmony_ci			}
4409e5c31af7Sopenharmony_ci		""
4410e5c31af7Sopenharmony_ci	end
4411e5c31af7Sopenharmony_ci
4412e5c31af7Sopenharmony_ci	case less_vs_lshift
4413e5c31af7Sopenharmony_ci		version 300 es
4414e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4415e5c31af7Sopenharmony_ci		both ""
4416e5c31af7Sopenharmony_ci			#version 300 es
4417e5c31af7Sopenharmony_ci			#if ( 8 < 3 << 2 ) == 1
4418e5c31af7Sopenharmony_ci			#define VAL 1.0
4419e5c31af7Sopenharmony_ci			#else
4420e5c31af7Sopenharmony_ci			#define VAL 0.0
4421e5c31af7Sopenharmony_ci			#endif
4422e5c31af7Sopenharmony_ci
4423e5c31af7Sopenharmony_ci			precision mediump float;
4424e5c31af7Sopenharmony_ci			${DECLARATIONS}
4425e5c31af7Sopenharmony_ci			void main()
4426e5c31af7Sopenharmony_ci			{
4427e5c31af7Sopenharmony_ci				out0 = VAL;
4428e5c31af7Sopenharmony_ci				${OUTPUT}
4429e5c31af7Sopenharmony_ci			}
4430e5c31af7Sopenharmony_ci		""
4431e5c31af7Sopenharmony_ci	end
4432e5c31af7Sopenharmony_ci
4433e5c31af7Sopenharmony_ci	case not_equal_vs_greater_or_equal
4434e5c31af7Sopenharmony_ci		version 300 es
4435e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4436e5c31af7Sopenharmony_ci		both ""
4437e5c31af7Sopenharmony_ci			#version 300 es
4438e5c31af7Sopenharmony_ci			#if ( 8 != 3 >= 2 ) == 1
4439e5c31af7Sopenharmony_ci			#define VAL 1.0
4440e5c31af7Sopenharmony_ci			#else
4441e5c31af7Sopenharmony_ci			#define VAL 0.0
4442e5c31af7Sopenharmony_ci			#endif
4443e5c31af7Sopenharmony_ci
4444e5c31af7Sopenharmony_ci			precision mediump float;
4445e5c31af7Sopenharmony_ci			${DECLARATIONS}
4446e5c31af7Sopenharmony_ci			void main()
4447e5c31af7Sopenharmony_ci			{
4448e5c31af7Sopenharmony_ci				out0 = VAL;
4449e5c31af7Sopenharmony_ci				${OUTPUT}
4450e5c31af7Sopenharmony_ci			}
4451e5c31af7Sopenharmony_ci		""
4452e5c31af7Sopenharmony_ci	end
4453e5c31af7Sopenharmony_ci
4454e5c31af7Sopenharmony_ci	case not_equal_vs_less_or_equal
4455e5c31af7Sopenharmony_ci		version 300 es
4456e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4457e5c31af7Sopenharmony_ci		both ""
4458e5c31af7Sopenharmony_ci			#version 300 es
4459e5c31af7Sopenharmony_ci			#if ( 8 != 3 <= 2 ) == 1
4460e5c31af7Sopenharmony_ci			#define VAL 1.0
4461e5c31af7Sopenharmony_ci			#else
4462e5c31af7Sopenharmony_ci			#define VAL 0.0
4463e5c31af7Sopenharmony_ci			#endif
4464e5c31af7Sopenharmony_ci
4465e5c31af7Sopenharmony_ci			precision mediump float;
4466e5c31af7Sopenharmony_ci			${DECLARATIONS}
4467e5c31af7Sopenharmony_ci			void main()
4468e5c31af7Sopenharmony_ci			{
4469e5c31af7Sopenharmony_ci				out0 = VAL;
4470e5c31af7Sopenharmony_ci				${OUTPUT}
4471e5c31af7Sopenharmony_ci			}
4472e5c31af7Sopenharmony_ci		""
4473e5c31af7Sopenharmony_ci	end
4474e5c31af7Sopenharmony_ci
4475e5c31af7Sopenharmony_ci	case not_equal_vs_greater
4476e5c31af7Sopenharmony_ci		version 300 es
4477e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4478e5c31af7Sopenharmony_ci		both ""
4479e5c31af7Sopenharmony_ci			#version 300 es
4480e5c31af7Sopenharmony_ci			#if ( 8 != 3 > 2 ) == 1
4481e5c31af7Sopenharmony_ci			#define VAL 1.0
4482e5c31af7Sopenharmony_ci			#else
4483e5c31af7Sopenharmony_ci			#define VAL 0.0
4484e5c31af7Sopenharmony_ci			#endif
4485e5c31af7Sopenharmony_ci
4486e5c31af7Sopenharmony_ci			precision mediump float;
4487e5c31af7Sopenharmony_ci			${DECLARATIONS}
4488e5c31af7Sopenharmony_ci			void main()
4489e5c31af7Sopenharmony_ci			{
4490e5c31af7Sopenharmony_ci				out0 = VAL;
4491e5c31af7Sopenharmony_ci				${OUTPUT}
4492e5c31af7Sopenharmony_ci			}
4493e5c31af7Sopenharmony_ci		""
4494e5c31af7Sopenharmony_ci	end
4495e5c31af7Sopenharmony_ci
4496e5c31af7Sopenharmony_ci	case not_equal_vs_less
4497e5c31af7Sopenharmony_ci		version 300 es
4498e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4499e5c31af7Sopenharmony_ci		both ""
4500e5c31af7Sopenharmony_ci			#version 300 es
4501e5c31af7Sopenharmony_ci			#if ( 8 != 3 < 2 ) == 1
4502e5c31af7Sopenharmony_ci			#define VAL 1.0
4503e5c31af7Sopenharmony_ci			#else
4504e5c31af7Sopenharmony_ci			#define VAL 0.0
4505e5c31af7Sopenharmony_ci			#endif
4506e5c31af7Sopenharmony_ci
4507e5c31af7Sopenharmony_ci			precision mediump float;
4508e5c31af7Sopenharmony_ci			${DECLARATIONS}
4509e5c31af7Sopenharmony_ci			void main()
4510e5c31af7Sopenharmony_ci			{
4511e5c31af7Sopenharmony_ci				out0 = VAL;
4512e5c31af7Sopenharmony_ci				${OUTPUT}
4513e5c31af7Sopenharmony_ci			}
4514e5c31af7Sopenharmony_ci		""
4515e5c31af7Sopenharmony_ci	end
4516e5c31af7Sopenharmony_ci
4517e5c31af7Sopenharmony_ci	case equal_vs_greater_or_equal
4518e5c31af7Sopenharmony_ci		version 300 es
4519e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4520e5c31af7Sopenharmony_ci		both ""
4521e5c31af7Sopenharmony_ci			#version 300 es
4522e5c31af7Sopenharmony_ci			#if ( 8 == 3 >= 2 ) == 0
4523e5c31af7Sopenharmony_ci			#define VAL 1.0
4524e5c31af7Sopenharmony_ci			#else
4525e5c31af7Sopenharmony_ci			#define VAL 0.0
4526e5c31af7Sopenharmony_ci			#endif
4527e5c31af7Sopenharmony_ci
4528e5c31af7Sopenharmony_ci			precision mediump float;
4529e5c31af7Sopenharmony_ci			${DECLARATIONS}
4530e5c31af7Sopenharmony_ci			void main()
4531e5c31af7Sopenharmony_ci			{
4532e5c31af7Sopenharmony_ci				out0 = VAL;
4533e5c31af7Sopenharmony_ci				${OUTPUT}
4534e5c31af7Sopenharmony_ci			}
4535e5c31af7Sopenharmony_ci		""
4536e5c31af7Sopenharmony_ci	end
4537e5c31af7Sopenharmony_ci
4538e5c31af7Sopenharmony_ci	case equal_vs_less_or_equal
4539e5c31af7Sopenharmony_ci		version 300 es
4540e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4541e5c31af7Sopenharmony_ci		both ""
4542e5c31af7Sopenharmony_ci			#version 300 es
4543e5c31af7Sopenharmony_ci			#if ( 8 == 3 <= 2 ) == 0
4544e5c31af7Sopenharmony_ci			#define VAL 1.0
4545e5c31af7Sopenharmony_ci			#else
4546e5c31af7Sopenharmony_ci			#define VAL 0.0
4547e5c31af7Sopenharmony_ci			#endif
4548e5c31af7Sopenharmony_ci
4549e5c31af7Sopenharmony_ci			precision mediump float;
4550e5c31af7Sopenharmony_ci			${DECLARATIONS}
4551e5c31af7Sopenharmony_ci			void main()
4552e5c31af7Sopenharmony_ci			{
4553e5c31af7Sopenharmony_ci				out0 = VAL;
4554e5c31af7Sopenharmony_ci				${OUTPUT}
4555e5c31af7Sopenharmony_ci			}
4556e5c31af7Sopenharmony_ci		""
4557e5c31af7Sopenharmony_ci	end
4558e5c31af7Sopenharmony_ci
4559e5c31af7Sopenharmony_ci	case equal_vs_greater
4560e5c31af7Sopenharmony_ci		version 300 es
4561e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4562e5c31af7Sopenharmony_ci		both ""
4563e5c31af7Sopenharmony_ci			#version 300 es
4564e5c31af7Sopenharmony_ci			#if ( 8 == 3 > 2 ) == 0
4565e5c31af7Sopenharmony_ci			#define VAL 1.0
4566e5c31af7Sopenharmony_ci			#else
4567e5c31af7Sopenharmony_ci			#define VAL 0.0
4568e5c31af7Sopenharmony_ci			#endif
4569e5c31af7Sopenharmony_ci
4570e5c31af7Sopenharmony_ci			precision mediump float;
4571e5c31af7Sopenharmony_ci			${DECLARATIONS}
4572e5c31af7Sopenharmony_ci			void main()
4573e5c31af7Sopenharmony_ci			{
4574e5c31af7Sopenharmony_ci				out0 = VAL;
4575e5c31af7Sopenharmony_ci				${OUTPUT}
4576e5c31af7Sopenharmony_ci			}
4577e5c31af7Sopenharmony_ci		""
4578e5c31af7Sopenharmony_ci	end
4579e5c31af7Sopenharmony_ci
4580e5c31af7Sopenharmony_ci	case equal_vs_less
4581e5c31af7Sopenharmony_ci		version 300 es
4582e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4583e5c31af7Sopenharmony_ci		both ""
4584e5c31af7Sopenharmony_ci			#version 300 es
4585e5c31af7Sopenharmony_ci			#if ( 8 == 3 < 2 ) == 0
4586e5c31af7Sopenharmony_ci			#define VAL 1.0
4587e5c31af7Sopenharmony_ci			#else
4588e5c31af7Sopenharmony_ci			#define VAL 0.0
4589e5c31af7Sopenharmony_ci			#endif
4590e5c31af7Sopenharmony_ci
4591e5c31af7Sopenharmony_ci			precision mediump float;
4592e5c31af7Sopenharmony_ci			${DECLARATIONS}
4593e5c31af7Sopenharmony_ci			void main()
4594e5c31af7Sopenharmony_ci			{
4595e5c31af7Sopenharmony_ci				out0 = VAL;
4596e5c31af7Sopenharmony_ci				${OUTPUT}
4597e5c31af7Sopenharmony_ci			}
4598e5c31af7Sopenharmony_ci		""
4599e5c31af7Sopenharmony_ci	end
4600e5c31af7Sopenharmony_ci
4601e5c31af7Sopenharmony_ci	case bitwise_and_vs_not_equal
4602e5c31af7Sopenharmony_ci		version 300 es
4603e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4604e5c31af7Sopenharmony_ci		both ""
4605e5c31af7Sopenharmony_ci			#version 300 es
4606e5c31af7Sopenharmony_ci			#if ( 8 & 3 != 2 ) == 0
4607e5c31af7Sopenharmony_ci			#define VAL 1.0
4608e5c31af7Sopenharmony_ci			#else
4609e5c31af7Sopenharmony_ci			#define VAL 0.0
4610e5c31af7Sopenharmony_ci			#endif
4611e5c31af7Sopenharmony_ci
4612e5c31af7Sopenharmony_ci			precision mediump float;
4613e5c31af7Sopenharmony_ci			${DECLARATIONS}
4614e5c31af7Sopenharmony_ci			void main()
4615e5c31af7Sopenharmony_ci			{
4616e5c31af7Sopenharmony_ci				out0 = VAL;
4617e5c31af7Sopenharmony_ci				${OUTPUT}
4618e5c31af7Sopenharmony_ci			}
4619e5c31af7Sopenharmony_ci		""
4620e5c31af7Sopenharmony_ci	end
4621e5c31af7Sopenharmony_ci
4622e5c31af7Sopenharmony_ci	case bitwise_and_vs_equal
4623e5c31af7Sopenharmony_ci		version 300 es
4624e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4625e5c31af7Sopenharmony_ci		both ""
4626e5c31af7Sopenharmony_ci			#version 300 es
4627e5c31af7Sopenharmony_ci			#if ( 8 & 3 == 2 ) == 0
4628e5c31af7Sopenharmony_ci			#define VAL 1.0
4629e5c31af7Sopenharmony_ci			#else
4630e5c31af7Sopenharmony_ci			#define VAL 0.0
4631e5c31af7Sopenharmony_ci			#endif
4632e5c31af7Sopenharmony_ci
4633e5c31af7Sopenharmony_ci			precision mediump float;
4634e5c31af7Sopenharmony_ci			${DECLARATIONS}
4635e5c31af7Sopenharmony_ci			void main()
4636e5c31af7Sopenharmony_ci			{
4637e5c31af7Sopenharmony_ci				out0 = VAL;
4638e5c31af7Sopenharmony_ci				${OUTPUT}
4639e5c31af7Sopenharmony_ci			}
4640e5c31af7Sopenharmony_ci		""
4641e5c31af7Sopenharmony_ci	end
4642e5c31af7Sopenharmony_ci
4643e5c31af7Sopenharmony_ci	case xor_vs_bitwise_and
4644e5c31af7Sopenharmony_ci		version 300 es
4645e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4646e5c31af7Sopenharmony_ci		both ""
4647e5c31af7Sopenharmony_ci			#version 300 es
4648e5c31af7Sopenharmony_ci			#if ( 8 ^ 3 & 2 ) == 10
4649e5c31af7Sopenharmony_ci			#define VAL 1.0
4650e5c31af7Sopenharmony_ci			#else
4651e5c31af7Sopenharmony_ci			#define VAL 0.0
4652e5c31af7Sopenharmony_ci			#endif
4653e5c31af7Sopenharmony_ci
4654e5c31af7Sopenharmony_ci			precision mediump float;
4655e5c31af7Sopenharmony_ci			${DECLARATIONS}
4656e5c31af7Sopenharmony_ci			void main()
4657e5c31af7Sopenharmony_ci			{
4658e5c31af7Sopenharmony_ci				out0 = VAL;
4659e5c31af7Sopenharmony_ci				${OUTPUT}
4660e5c31af7Sopenharmony_ci			}
4661e5c31af7Sopenharmony_ci		""
4662e5c31af7Sopenharmony_ci	end
4663e5c31af7Sopenharmony_ci
4664e5c31af7Sopenharmony_ci	case bitwise_or_vs_xor
4665e5c31af7Sopenharmony_ci		version 300 es
4666e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4667e5c31af7Sopenharmony_ci		both ""
4668e5c31af7Sopenharmony_ci			#version 300 es
4669e5c31af7Sopenharmony_ci			#if ( 8 | 3 ^ 2 ) == 9
4670e5c31af7Sopenharmony_ci			#define VAL 1.0
4671e5c31af7Sopenharmony_ci			#else
4672e5c31af7Sopenharmony_ci			#define VAL 0.0
4673e5c31af7Sopenharmony_ci			#endif
4674e5c31af7Sopenharmony_ci
4675e5c31af7Sopenharmony_ci			precision mediump float;
4676e5c31af7Sopenharmony_ci			${DECLARATIONS}
4677e5c31af7Sopenharmony_ci			void main()
4678e5c31af7Sopenharmony_ci			{
4679e5c31af7Sopenharmony_ci				out0 = VAL;
4680e5c31af7Sopenharmony_ci				${OUTPUT}
4681e5c31af7Sopenharmony_ci			}
4682e5c31af7Sopenharmony_ci		""
4683e5c31af7Sopenharmony_ci	end
4684e5c31af7Sopenharmony_ci
4685e5c31af7Sopenharmony_ci	case logical_and_vs_bitwise_or
4686e5c31af7Sopenharmony_ci		version 300 es
4687e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4688e5c31af7Sopenharmony_ci		both ""
4689e5c31af7Sopenharmony_ci			#version 300 es
4690e5c31af7Sopenharmony_ci			#if ( 0 && 3 | 2 )
4691e5c31af7Sopenharmony_ci			#define VAL 0.0
4692e5c31af7Sopenharmony_ci			#else
4693e5c31af7Sopenharmony_ci			#define VAL 1.0
4694e5c31af7Sopenharmony_ci			#endif
4695e5c31af7Sopenharmony_ci
4696e5c31af7Sopenharmony_ci			precision mediump float;
4697e5c31af7Sopenharmony_ci			${DECLARATIONS}
4698e5c31af7Sopenharmony_ci			void main()
4699e5c31af7Sopenharmony_ci			{
4700e5c31af7Sopenharmony_ci				out0 = VAL;
4701e5c31af7Sopenharmony_ci				${OUTPUT}
4702e5c31af7Sopenharmony_ci			}
4703e5c31af7Sopenharmony_ci		""
4704e5c31af7Sopenharmony_ci	end
4705e5c31af7Sopenharmony_ci
4706e5c31af7Sopenharmony_ci	case logical_and_vs_bitwise_and
4707e5c31af7Sopenharmony_ci		version 300 es
4708e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4709e5c31af7Sopenharmony_ci		both ""
4710e5c31af7Sopenharmony_ci			#version 300 es
4711e5c31af7Sopenharmony_ci			#if ( 0 && 4 & 2 )
4712e5c31af7Sopenharmony_ci			#define VAL 0.0
4713e5c31af7Sopenharmony_ci			#else
4714e5c31af7Sopenharmony_ci			#define VAL 1.0
4715e5c31af7Sopenharmony_ci			#endif
4716e5c31af7Sopenharmony_ci
4717e5c31af7Sopenharmony_ci			precision mediump float;
4718e5c31af7Sopenharmony_ci			${DECLARATIONS}
4719e5c31af7Sopenharmony_ci			void main()
4720e5c31af7Sopenharmony_ci			{
4721e5c31af7Sopenharmony_ci				out0 = VAL;
4722e5c31af7Sopenharmony_ci				${OUTPUT}
4723e5c31af7Sopenharmony_ci			}
4724e5c31af7Sopenharmony_ci		""
4725e5c31af7Sopenharmony_ci	end
4726e5c31af7Sopenharmony_ci
4727e5c31af7Sopenharmony_ci	case logical_or_vs_logical_and
4728e5c31af7Sopenharmony_ci		version 300 es
4729e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
4730e5c31af7Sopenharmony_ci		both ""
4731e5c31af7Sopenharmony_ci			#version 300 es
4732e5c31af7Sopenharmony_ci			#if ( 0 || 4 && 0 )
4733e5c31af7Sopenharmony_ci			#define VAL 0.0
4734e5c31af7Sopenharmony_ci			#else
4735e5c31af7Sopenharmony_ci			#define VAL 1.0
4736e5c31af7Sopenharmony_ci			#endif
4737e5c31af7Sopenharmony_ci
4738e5c31af7Sopenharmony_ci			precision mediump float;
4739e5c31af7Sopenharmony_ci			${DECLARATIONS}
4740e5c31af7Sopenharmony_ci			void main()
4741e5c31af7Sopenharmony_ci			{
4742e5c31af7Sopenharmony_ci				out0 = VAL;
4743e5c31af7Sopenharmony_ci				${OUTPUT}
4744e5c31af7Sopenharmony_ci			}
4745e5c31af7Sopenharmony_ci		""
4746e5c31af7Sopenharmony_ci	end
4747e5c31af7Sopenharmony_ci
4748e5c31af7Sopenharmony_ciend # operator_precedence
4749