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