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