blob: bce5ffa37970bdde857597212504a2c5f279eb78 [file] [log] [blame]
John Kesseniche1dba1b2013-11-19 20:52:56 +00001#version 300 es
John Kessenich464f6d92013-02-06 00:14:16 +00002#define ON1
3#define ON2
John Kessenich464f6d92013-02-06 00:14:16 +00004float sum = 0.0;
5
6void main()
7{
8#if defined(ON1) && (defined(OFF) || defined(ON2))
9//yes
10 sum += 1.0;
11#endif
12
13#if !defined(ON1) || (defined(OFF) || (!defined(OFF2) && defined(ON2)))
14//yes
15 sum += 20.0;
16#endif
17
18#if defined(ON1) && (defined(OFF) || !defined(ON2))
19//no
20 sum += 0.1;
21#endif
22
23#if !defined(ON1) || (defined(OFF) || !defined(OFF2) && !defined(ON2))
24//no
25 sum += 0.2;
26#endif
27
28#if !defined(ON1) || !defined(OFF) || defined(ON2) && defined(OFF2)
29//yes
30 sum += 300.0;
31#endif
32
33#if (!defined(ON1) || !defined(OFF) || defined(ON2)) && defined(OFF2)
34//no
35 sum += 0.4;
36#endif
37
38// sum should be 321.0
39 gl_Position = vec4(sum);
40}
John Kessenich8d8f4cc2013-10-18 03:09:37 +000041
42#define ADD(a, b) a + b + ((a) + ((b)));
43
44float foo()
45{
46 return ADD(gl_Position.xyxwx, 3.0) // ERROR, should be this line number
47 return ADD(gl_Position.y, 3.0)
48}
John Kessenich4d6570a2013-11-10 23:07:36 +000049
John Kesseniche1dba1b2013-11-19 20:52:56 +000050#define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \
51 antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \
52 antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \
53 a ntoehanu tunth nsont uhansoethausn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \
54 anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \
55 ontehanutoe hnuathoena aoteha aonetuha
56
57// identical
58#define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \
59 antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \
60 antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \
61 a ntoehanu tunth nsont uhansoethausn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \
62 anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \
63 ontehanutoe hnuathoena aoteha aonetuha
64
65// ERROR, one character different
66#define BIG aonetuhanoethuanoenaoethu snaoetuhs onethausoentuas hnoethaueohnatuoeh santuoehsantouhe snathoensuta hsnoethuasntoe hsnuathoesnuathoenstuh nsoethantseuh toae ua \
67 antoeh uantheount oentahoent uahnsoethasnutoehansteuo santhu sneoathu snoethasnut oesanthoesna thusenotha nsthasunoeth ausntehsunathoensuathoesnta uhnsoetha usntoeh uanhs unosethu \
68 antoehunatoehu natoehua oentha neotuhan toehu natoehu ntahoe nutah eu natoheunathoen uasoenuasoent asntoehsan tuosnthnu aohenuath eontha untoh eunth unth anth unth nth nth nt \
69 a ntoehanu tunth nsont uhansoethasn oehsanthnt heauo eanthuo sh nahnoethansu tohe sanuthoe snathuoesntha snuothe anthusonehtasuntoeh asnuthonsa teauhntoeha onetuha nth \
70 anoethuan toentauh noethauntohe anuthoe nathu noethaun oethanuthoe nathuoe ntahu enotha unetha ntuhenaothu enotahun eotha ntoehu aoehuntha enotuh aonethau noethu anoethuna toheua \
71 ontehanutoe hnuathoena aoteha aonetuha
72
73#define BIGARGS1(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu
74#define BIGARGS2(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu
75#define BIGARGS3(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu
76#define BIGARGS4(aonthanotehu, bonthanotehu, conthanotehu, donthanotehu, eonthanotehu, fonthanotehu, gonthanotehu, honthanotehu, ionthanotehu, jonthanotehu, konthanotehu) jonthanotehu
77
John Kessenich98434be2013-12-02 15:56:38 +000078
79#define foobar(a, b) a + b
80
81#if foobar(1.1, 2.2)
82#error good macro
83#else
84#error bad macro
85#endif
86
87#if foobar(1
88;
89#
90#
91#endif
92#if foobar(1,
93;
94#
95#
96#endif
97float c = foobar(1.1, 2.2
98 );
99#if foobar(1.1, 2.2
100)
101#if foobar(1.1, 2.2
John Kessenich7fc36692013-12-06 18:19:22 +0000102#endif
103#endif
John Kessenich98434be2013-12-02 15:56:38 +0000104
John Kessenich7fc36692013-12-06 18:19:22 +0000105#define VAL0 0
106#define VAL1 1
107
108#if UNDEF
109#error bad 0
110#else
111#error good 0
112#endif
113
114#if VAL1 || UNDEF
115#error good 1
116#else
117#error bad 1
118#endif
119
120#if VAL1 && UNDEF // UNDEF ERROR
121#endif
122
123#if VAL0 || UNDEF // UNDEF ERROR
124#endif
125
126#if VAL0 && UNDEF
127#error bad 2
128#else
129#error good 1
130#endif
131
132#if VAL1 || (VAL1 && UNDEF)
133#error good 3
134#else
135#error bad 3
136#endif
137
138#if VAL1 && (VAL1 || UNDEF)
139#error good 4
140#else
141#error bad 4
142#endif
143
144#if VAL1 < VAL1 || VAL1 > VAL1 || UNDEF // UNDEF ERROR
145#endif
146
147#if VAL1 < VAL1 || VAL1 > VAL1 && UNDEF
148#endif
149
150#if VAL1 || UNDEF && UNDEF2
151#endif
152
153#if VAL0 || UNDEF && UNDEF2 // UNDEF ERROR
154#endif
155
156#if (VAL1 || UNDEF) && UNDEF2 // UNDEF2 ERROR
157#endif
158
159#if (VAL0 && UNDEF) || UNDEF2 // UNDEF2 ERROR
160#endif
161
John Kessenich2b20dcb2014-12-20 07:03:18 +0000162#line 3000
163#error line of this error should be 3000
John Kessenich50d542e2015-01-07 18:47:57 +0000164
165#define __LINE__ 30
166#define __FILE__
167#define __VERSION__
168#define GL_SOME_EXTENSION
169#undef __LINE__
170#undef __FILE__
171#undef __VERSION__
172#undef GL_SOME_EXTENSION
John Kessenich2b20dcb2014-12-20 07:03:18 +0000173
John Kessenichd2762562015-07-20 12:29:41 -0600174#line 4000
175#line 200 % 0 // ERROR, div by 0
176#if __LINE__ / 0 // ERROR, div by 0
177#endif
178
179#if 7% // ERROR incomplete expression
180
John Kessenich7fc36692013-12-06 18:19:22 +0000181#line 10000
John Kessenich4d6570a2013-11-10 23:07:36 +0000182#if 0
183// ERROR, EOF