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