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