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