Merge pull request #2891 from dneto0/hlsl-namespace
[platform/upstream/glslang.git] / Test / cppComplexExpr.vert
1 #version 300 es
2 #define ON1
3 #define ON2
4 float sum = 0.0;
5
6 void 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 }
41
42 #define ADD(a, b) a + b + ((a) + ((b)));
43
44 float 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 }
49
50 #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
78
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
97 float c = foobar(1.1, 2.2
98        );
99 #if foobar(1.1, 2.2
100 )
101 #if foobar(1.1, 2.2
102 #endif
103 #endif
104
105 #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
162 #line 3000
163 #error line of this error should be 3000
164     
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
173
174 #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
181 #line 10000
182 #if 0
183 // ERROR, EOF