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