13c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup basic "Basic Tests"
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case correct_phases
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define e +1
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				mediump int n = 1e;
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_identifier
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define e +1
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				mediump int 1xyz = 1;
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case null_directive
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 0.0; }
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# // comment
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/*sfd*/		# /* */
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_directive
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#defin AAA
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_identifier
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_object
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = -1.0; }
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE - 1.0;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_function
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = -1.0; }
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE(a)
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE(2.0) - 1.0;
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_directive
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
115dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry	case identifier_with_double_underscore
116dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry		values { output float out0 = 1.0; }
117dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry		both ""
118dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			precision mediump float;
119dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			${DECLARATIONS}
120dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			# define __VALUE__	1
121dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry
122dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			void main()
123dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			{
124dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry				// __VALUE__ not used since it might be set by an "underlying software layer"
125dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry				out0 = float(1.0);
126dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry				${OUTPUT}
127dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry			}
128dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry		""
129dd3c1e9bf560d4490d4aad5763e0180b098dbb0eJarkko Pöyry	end
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # basic
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup definitions "Symbol Definition Tests"
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case define_value_and_function
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS:single-line}
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define		VALUE			(1.5 + 2.5)
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define		FUNCTION(__LINE__, b)	__LINE__+b
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(VALUE, ((0.2) + 1.8) );
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_object_invalid_syntax
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		VAL			2.0
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef		VAL	sdflkjfds
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		VAL			1.0
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VAL);
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_1
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __LINE__
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__);
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_2
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __FILE__
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__FILE__);
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_3
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __VERSION__
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__VERSION__);
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_4
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef GL_ES
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(GL_ES);
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_function
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		FUNCTION(a,b) a+b
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef		FUNCTION
225f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define		FUNCTION(a,b) a-b
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(3.0, 2.0);
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # definitions
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_definitions "Invalid Definition Tests"
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case define_non_identifier
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 123 321
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undef_non_identifier_1
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef 123
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undef_non_identifier_2
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef foo.bar
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_definitions
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup object_redefinitions "Object Redefinition Tests"
2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_ident
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
287f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2.0
288f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAAA		2.1
2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAAA - 1.0)
2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_whitespace
3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
303f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2.0
3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA- 1.0)
3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_op
3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
318f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2.0
3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA + 1.0)
3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_floatval_1
3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
333f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2.0
3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.1)
3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_floatval_2
3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
348f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2.0
3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0e-1)
3513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_intval_1
3603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
363f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2
3643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1)
3653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 2)
3663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_intval_2
3753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
378f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			# define AAA		2
3793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1)
3803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 0x1)
3813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_1
3903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
3913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
3953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
396f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define		VAL2 2.0
3973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 (RES1 * VAL2)
3993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
4003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	(RES1 * VAL2)
4013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
4023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_ifdef
4123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifdef ADEFINE
4213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_undef_ifdef
4353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef ADEFINE
4433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifdef ADEFINE
4453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_ifndef
4593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifndef ADEFINE
4683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_defined_1
4823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#if defined(ADEFINE)
4913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_defined_2
5053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
5063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
5113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
5123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#if defined ADEFINE
5143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
5153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
5163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
5173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
5183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_comment
5283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
5293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
534f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define		VAL2 2.0
5353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 /* fdsjklfdsjkl dsfjkhfdsjkh fdsjklhfdsjkh */ (RES1 * VAL2)
5373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
5383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
5393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
5403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_multiline_comment
5503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
5513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
556f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define		VAL2 2.0
5573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 /* fdsjklfdsjkl
5593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							dsfjkhfdsjkh
5603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							fdsjklhfdsjkh */ (RES1 * VAL2)
5613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
5623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
5633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
5643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5733c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # object_redefinitions
5743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5753c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_redefinitions "Invalid Redefinitions Tests"
5763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_identifier_2
5783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
5793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define GL_VALUE	1.0
5823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(GL_VALUE);
5863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5903c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_redefinitions
5913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5923c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup comments "Comment Tests"
5933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case multiline_comment_define
5953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 4.2; }
5963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE /* current
6003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						value */ 4.2
6013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
6053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_comment
6113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/* /* */
6193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				// */
6213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case comment_trick_1
6273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case comment_trick_2
6443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_comment
6613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/* /* */ */
6673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = 1.0;
6683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment_1
6733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*
6793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment_2
6843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			/*
6873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6943c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # comments
6953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6963c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup function_definitions "Function Definitions Tests"
6973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case same_object_and_function_param
6993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
7003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
7043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
7053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FUNCTION(VALUE, B)	(VALUE-B)
7063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(3.0, 2.0);
7103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case complex_func
7163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 518.5; }
7173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
7203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(a,b)	a*(BBB(a,b))
7213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB(a,b)	a-b
7223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				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)));
7263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_definition_with_comments
7323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
7333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
736f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			/* sdfljk */	#/* sdfljk */define /* sdfljk */ FUNC( /* jklsfd*/a /*sfdjklh*/, /*sdfklj */b /*sdfklj*/)		a+b
7373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
7413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7463c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # function_definitions
7473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7483c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup recursion "Recursions Tests"
7493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_1
7513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	AAA
7553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_2
7643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	BBB
768f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define BBB		AAA
7693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_3
7783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	(1.0+BBB)
782f189365bd621a14ac442faf93d81d031aad3a6f8Pyry Haulos			#define BBB		(2.0+AAA)
7833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_4
7923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA(a)	AAA(a)
7963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA(1.0));
8003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_5
8053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA(a, b)	AAA(b, a)
8093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA(1.0, 2.0));
8133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # recursion
8183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8193c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup function_redefinitions "Function Redefinition Tests"
8203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_1
8223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC( a, b)		a+b
8273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_2
8383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		(a  +b)
8423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC( a, b )(a			+b)
8433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_3
8543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		(a  +b)
8583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)(a	/* comment
8593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									 */ +b)
8603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_1
8713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A,b)		A+b
8763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
8803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_2
8853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b,c)	a+b+c
8903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
8943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_3
8993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		b+a
9043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
9083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9123c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # functions_redefinitions
9133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9143c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_function_definitions "Invalid Function Definition Tests"
9153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_1
9173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC);
9253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_2
9303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC());
9383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_3
9433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC((();
9513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_4
9563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC));
9643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_5
9693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0));
9773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_6
9823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
9903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_7
9953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,));
10033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_8
10083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
10123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
10163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unique_param_name
10213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,a)		a+a
10253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_1
10343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a b)		a+b
10383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_2
10473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a + b)		a+b
10513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_3
10603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(,a,b)		a+b
10643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_1
10733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(
10773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_2
10863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A  a+b
10903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_3
10993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
11003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A,B,C  a+b
11033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
11073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_4
11123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
11133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(
11163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_function_definitions
11203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11213c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup semantic "Semantic Tests"
11223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ops_as_arguments
11243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 20.0; }
11253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FOO(a, b)		(1 a 9) b 2
11293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(FOO(+, *));
11333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case correct_order
11393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FUNC(A) A
11443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define A 2.0
11453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(A - 1.0);
11493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11543c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # semantic
11553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11563c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup predefined_macros "Predefined Macros Tests"
11573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version
11593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 100.0; }
11603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define AAA __VERSION__
11663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(AAA);
11673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case gl_es_1
11733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(GL_ES);
11813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case gl_es_2
11873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(A) A
11923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(AAA(GL_ES));
11963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_1
12023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			const mediump int line = __LINE__;
12053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(line);
12103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_2
12163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Note: Arguments are macro replaced in the first stage.
12173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Macro replacement list is expanded in the last stage.
12183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(11.0, 11.0, 9.0, 10.0); }
12193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS:single-line}
12233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB		__LINE__, /*
12243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				*/ __LINE__
12253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(a,b) BBB, a, b
12263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(AAA(__LINE__,
12303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						__LINE__
12313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						));
12323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case file
12383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 0.0; }
12393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__FILE__);
12453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_gl_es
12513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if GL_ES
12583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
12603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
12613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
12623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_version
12683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if __VERSION__ == 100
12753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
12773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
12783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
12793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12843c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # predefined_macros
12853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12863c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup conditional_inclusion "Conditional Inclusion Tests"
12873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_1
12893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA asdf
12963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined AAA && !defined(BBB)
12983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
13013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_2
13083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA defined(BBB)
13153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !AAA
13173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
13203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_3
13273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
13343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
13383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -3.0;
13413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_4
13483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
13553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_5
13673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
13743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unary_ops_1
13863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~2 >> 1) & 1)
13933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unary_ops_2
14033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
14043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
14073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(- - - - - 1 + + + + + +1) >> 1) & 1)
14103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
14113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
14133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
14153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14193c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # conditional_inclusion
14203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14213c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_ops "Invalid Operations Tests"
14223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_op_1
14243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(+ ++1 - - - -1) >> 1) & 1)
14303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
14313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_op_2
14393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(+ + +1 - -- -1) >> 1) & 1)
14453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
14463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_1
14543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined
14623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_2
14693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined()
14773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_3
14843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined(
14923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_4
14993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined)
15073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
15083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_5
15143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined((AAA))
15223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
15233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_rparen
15293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined(AAA
15373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
15383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_define
15443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define define 1
15493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA 1.0
15503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = AAA;
15543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15593c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_ops
15603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15613c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup undefined_identifiers "Undefined Identifiers Tests"
15623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case valid_undefined_identifier_1
15643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 || AAA
15713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
15723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
15733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
15743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case valid_undefined_identifier_2
15813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0 && AAA
15883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
15893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
15903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
15913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_1
15983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 - CCC + (-AAA || BBB)
16043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_2
16133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !A
16193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_3
16283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if -A
16343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_4
16433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ~A
16493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_5
16583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_6
16733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 1
16793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_7
16893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
16953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_8
17053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
17113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 2
17123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#undef A
17133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
17143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_9
17233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_10
17383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 0
17443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_11
17543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 0
17603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define B 2
17613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#undef B
17623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_12
17723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
17783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17873c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # undefined_identifiers
17883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17893c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_conditionals "Invalid Conditionals Tests"
17903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_if
17923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if
17983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_ifdef
18043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef
18103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_ifndef
18163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef
18223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_if_defined
18283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined
18343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_if_1
18403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
18463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_if_2
18523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
18583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_ifdef
18643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef FOOBAR
18703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_ifndef
18763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef GL_ES
18823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_else_1
18883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
18943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
18953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_else_2
19013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_1
19143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_2
19273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
19333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
19343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_3
19403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
19473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(2.0);
19483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case elif_after_else
19533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
19623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(0.0);
19643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case else_without_if
19703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case elif_without_if
19833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case endif_without_if
19963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case else_after_else
20083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !GL_ES
20143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
20163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(-1.0);
20173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
20183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(-1.0);
20193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_elif_without_if
20253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
20313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	elif
20333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(0.0);
20343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
20353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_float
20413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1.231
20473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	elif
20493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(0.0);
20503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
20513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_if
20573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 foobar
20633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_elif
20703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
20763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif foobar
20773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_else
20843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
20903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else foobar 1.231
20913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_endif
20983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
21043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif foobar
21063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_ifdef
21123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef FOOBAR foobar
21183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_ifndef
21263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef FOOBAR ,, +- << barbar
21323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21393c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_conditionals
21403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup conditionals "Conditionals Tests"
21423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_nested_blocks
21443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
21503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 1
21513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_1
21573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
21603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef AAA
21653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
21663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
21683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
21703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_2
21753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
21783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined  ( AAA)
21833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
21843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
21863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
21883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_3
21933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef AAA
22003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_ifdef
22103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
22113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef 1
22163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
22173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifndef_1
22233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifndef_2
22403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
22453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_ifndef
22583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
22593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef 1
22643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
22653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mixed_conditional_inclusion
22713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
22803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_1
22883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if GL_ES
22953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if __VERSION__ != 100
22963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	else
22983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
23003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
23013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_2
23073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
23143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 0
23153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	else
23173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		if 0
23183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		elif 1
23203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		else
23223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		endif
23243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
23253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
23263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_3
23323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
23393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 1
23403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
23423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
23433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
23453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23503c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # conditionals
23513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23523c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup directive "Directive Tests"
23533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version
23553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/* asdf */
23583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100
23593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_is_less
23703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 99
23733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
23773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_is_more
23823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 101
23853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
23893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_missing
23943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version
23973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_not_first_statement_1
24063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#version 100
24103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_not_first_statement_2
24183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FOO BAR
24213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#version 100
24223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_invalid_token_1
24313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100.0
24343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_invalid_token_2
24433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version foobar
24463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_version
24553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version AAA
24583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case additional_tokens
24673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100 foobar
24703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case error_with_no_tokens
24793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#error
24823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case error
24913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA asdf
24943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#error 1 * AAA /* comment */
24953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25033c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # directive
25043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25053c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup builtin "Built-in Symbol Tests"
25063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line
25083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
25093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 1
25153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_and_file
25223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(234.0, 234.0, 10.0, 10.0); }
25233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 234 10
25293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_expression
25363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 20.0; }
25373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#line +20
25433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_and_file_expression
25503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(243.0, 243.0, 10.0, 10.0); }
25513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#line (233 +10) (+10)
25573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_defined_1
25643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 4.0; }
25653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 4
25713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line A
25723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_defined_2
25793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(234.0, 234.0, 10.0, 10.0); }
25803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 10
25863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 234 A
25873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_line
25943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
25953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line
26003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
26013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_1
26063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 22 1.234
26123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_3
26183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 233 10 2
26243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_4
26303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line foobar
26363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26413c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # builtin
26423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26433c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup pragmas "Pragma Tests"
26443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26450b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry	case pragma_vertex
26463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
26470b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry
26480b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		vertex ""
26490b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma
26500b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma STDGL invariant(all)
26510b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma debug(off)
26520b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma optimize(off)
26533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26550b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			${VERTEX_DECLARATIONS}
26560b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			varying float v_val;
26573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26590b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				v_val = 1.0;
26600b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				${VERTEX_OUTPUT}
26610b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			}
26620b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		""
26630b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		fragment ""
26640b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			precision mediump float;
26650b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			${FRAGMENT_DECLARATIONS}
26660b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			invariant varying float v_val;
26670b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			void main()
26680b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			{
26690b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				out0 = v_val;
26700b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				${FRAGMENT_OUTPUT}
26710b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			}
26720b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		""
26730b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry	end
26740b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry
26750b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry	case pragma_fragment
26760b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		values { output float out0 = 1.0; }
26770b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry
26780b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		vertex ""
26790b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			precision mediump float;
26800b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			${VERTEX_DECLARATIONS}
26810b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			varying float v_val;
26820b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			void main()
26830b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			{
26840b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				v_val = 1.0;
26850b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				${VERTEX_OUTPUT}
26860b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			}
26870b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		""
26880b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry		fragment ""
26890b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma
26900b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma STDGL invariant(all)
26910b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma debug(off)
26920b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			#pragma optimize(off)
26930b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry
26940b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			precision mediump float;
26950b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			${FRAGMENT_DECLARATIONS}
26960b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			varying float v_val;
26970b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			void main()
26980b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry			{
26990b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				out0 = v_val;
27000b7f209dcdf54a69339f470328703e4608b77b16Jarkko Pöyry				${FRAGMENT_OUTPUT}
27013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case pragma_macro_exp
27063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
27073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define off	INVALID
27093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/* pragma line not macro expanded */
27103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma debug(off)
27113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
27143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
27173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
27183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2722624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry	case pragma_unrecognized_debug
2723624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry		expect build_successful
27243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#pragma debug(1.23)
27263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2727624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry			// unrecognized preprocessor token
2728624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry
27293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2737624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry	case pragma_unrecognized_token
2738624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry		expect build_successful
27393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#pragma ¤¤½
27413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2742624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry			// trailing bytes form a valid but unrecognized preprocessor token
2743624f8ecf68812089c888227ff15bf2101211e588Jarkko Pöyry
27443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27523c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # pragmas
27533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27543c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup extensions "Extension Tests"
27553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic
27573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
27583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
27603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
27633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
27663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
27673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case macro_exp
27723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
27733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define warn enable
27753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
27773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
27803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
27833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
27843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_extension_name
27893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension
27923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_extension_name
28013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension 2 : all
28043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_colon
28133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all
28163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case expected_colon
28253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all ;
28283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_behavior
28373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all :
28403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_behavior_1
28493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : WARN
28523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_behavior_2
28613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : require
28643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_char_in_name
28733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all¤ : warn
28763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_char_in_behavior
28853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : war¤n
28883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment
28973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn /*asd
29003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
29043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case after_non_preprocessing_tokens
29093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
29103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
29123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : disable
29183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
29193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29223c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # extensions
29233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29243c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup expressions "Expression Tests"
29253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case shift_left
29273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
29343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL << 2) == 16
29363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case shift_right
29443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 5
29513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >> 1) == 2
29533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case cmp_less_than
29613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 5
29683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL < 6) && (-VAL < -4)
29703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal
29783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
29853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL <= 6) && (-VAL <= -6)
29873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case or
29953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
30023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL | 5) == 7
30043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case and
30123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
30193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL & 5) == 4
30213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case xor
30293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
30363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL ^ 5) == 3
30383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mod
30463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 12
30533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL % 5) == 2
30553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_value
30633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL ((  (4   ) )  )
30703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL >= 4
30723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_tricky
30803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL ((  (4   ) )
30873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL) >= 4
30893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_if_no
30973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
31053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL >= 4
31063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_if
31143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
31223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
31233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_multi_if
31313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL (4)
31383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
31393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (((VAL)) >= (4))
31403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_single_if
31483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
31563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
31573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_ifelse_true
31653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
31733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_ifelse_false
31833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL > 4)
31913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_basic_0
32013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if -4 + 5 == 1
32083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_basic_1
32183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (2 * 2) - 3 >= 0
32253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_simple_precedence_0
32353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if 2 * 3 - 3 == 3
32423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_simple_precedence_1
32523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if 2 - 2 / 2 == 1
32593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_1
32693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X)
32773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_2
32873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
32933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) == Y
32963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_3
33063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
33073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && defined(Y)
33153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_4
33253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
33263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef X
33323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && defined(Y)
33353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_5
33453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
33463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef X
33523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) || defined(Y)
33553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_6
33653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
33663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef Y
33723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && (defined(Y) || (X == 0))
33753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33843c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # expressions
33853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33863c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_expressions "Invalid Expression Tests"
33873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_unary_expr
33893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !
33953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_binary_expr
34013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 3+4+
34073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_expr
34133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if
34193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_1
34253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4 4
34313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_2
34373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4 * * 4
34433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_3
34493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if (4)(4)
34553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unopened_parenthesis
34613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4)
34673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unclosed_parenthesis
34733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ((4 + 7)
34793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34843c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_expressions
34853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34863c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup operator_precedence "Operator precedence"
34873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_not
34903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
34913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % ! 0 ) == 0
34943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
34953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
34963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
34973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
34983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_not
35093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / ! 0 ) == 8
35133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_not
35283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * ! 0 ) == 8
35323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_bit_invert
35473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % ~ 4 ) == 3
35513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_minus
35663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % - 2 ) == 0
35703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_plus
35853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % + 2 ) == 0
35893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_bit_invert
36043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / ~ 2 ) == -2
36083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_minus
36233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / - 2 ) == -4
36273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_plus
36423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / + 2 ) == 4
36463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_bit_invert
36613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * ~ 2 ) == -24
36653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_minus
36803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * - 2 ) == -16
36843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_plus
36993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * + 2 ) == 16
37033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_modulo
37183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 % 2 ) == 7
37223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_div
37373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 / 2 ) == 7
37413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_mul
37563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 * 2 ) == 2
37603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_modulo
37753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 % 2 ) == 9
37793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_div
37943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 / 2 ) == 9
37983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_mul
38133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 * 2 ) == 14
38173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case rshift_vs_sub
38323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >> 3 - 2 ) == 4
38363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case rshift_vs_add
38513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >> 3 + 2 ) == 0
38553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case lshift_vs_sub
38703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 << 3 - 2 ) == 16
38743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case lshift_vs_add
38893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 << 3 + 2 ) == 256
38933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_or_equal_vs_rshift
39083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >= 3 >> 2 ) == 1
39123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_or_equal_vs_lshift
39273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >= 3 << 2 ) == 0
39313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal_vs_rshift
39463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 <= 3 >> 2 ) == 0
39503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal_vs_lshift
39653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 <= 3 << 2 ) == 1
39693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_vs_rshift
39843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 > 3 >> 2 ) == 1
39883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_vs_lshift
40033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 > 3 << 2 ) == 0
40073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_vs_rshift
40223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 < 3 >> 2 ) == 0
40263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_vs_lshift
40413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 < 3 << 2 ) == 1
40453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_greater_or_equal
40603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 >= 2 ) == 1
40643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_less_or_equal
40793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 <= 2 ) == 1
40833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_greater
40983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 > 2 ) == 1
41023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_less
41173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 < 2 ) == 1
41213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_greater_or_equal
41363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 >= 2 ) == 0
41403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_less_or_equal
41553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 <= 2 ) == 0
41593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_greater
41743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 > 2 ) == 0
41783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_less
41933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 < 2 ) == 0
41973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_and_vs_not_equal
42123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 & 3 != 2 ) == 0
42163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_and_vs_equal
42313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 & 3 == 2 ) == 0
42353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case xor_vs_bitwise_and
42503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 ^ 3 & 2 ) == 10
42543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_or_vs_xor
42693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 | 3 ^ 2 ) == 9
42733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_and_vs_bitwise_or
42883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 && 3 | 2 )
42923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
43003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
43013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
43023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
43033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
43043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
43053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
43063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_and_vs_bitwise_and
43073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
43083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
43093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
43103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 && 4 & 2 )
43113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
43123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
43133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
43143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
43153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
43163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
43173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
43183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
43193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
43203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
43213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
43223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
43233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
43243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
43253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_or_vs_logical_and
43263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
43273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
43283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
43293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 || 4 && 0 )
43303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
43313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
43323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
43333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
43343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
43353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
43363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
43373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
43383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
43393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
43403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
43413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
43423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
43433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
43443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # operator_precedence
4345