cppSimple.vert 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353
  1. #version 400
  2. #define ON
  3. float sum = 0.0;
  4. void main()
  5. {
  6. #ifdef ON
  7. //yes
  8. sum += 1.0;
  9. #endif
  10. #ifdef OFF
  11. //no
  12. sum += 20.0;
  13. #endif
  14. #if defined(ON)
  15. //yes
  16. sum += 300.0;
  17. #endif
  18. #if defined(OFF)
  19. //no
  20. sum += 4000.0;
  21. #endif
  22. #if !defined(ON)
  23. //no
  24. sum += 50000.0;
  25. #endif
  26. #ifndef OFF
  27. //yes
  28. sum += 600000.0;
  29. #else
  30. //no
  31. sum += 0.6;
  32. #endif
  33. #if defined(ON) && defined(OFF)
  34. //no
  35. sum += 0.7;
  36. #elif !defined(OFF)
  37. //yes
  38. sum += 7000000.0;
  39. #endif
  40. #if defined(ON) && !defined(OFF)
  41. //yes
  42. sum += 80000000.0;
  43. #endif
  44. #if defined(OFF) || defined(ON)
  45. //yes
  46. sum += 900000000.0;
  47. #endif
  48. #if NEVER_DEFINED
  49. //no
  50. sum += 0.04;
  51. #else
  52. sum += 0.05;
  53. #endif
  54. // sum should be 987600301.7
  55. gl_Position = vec4(sum);
  56. }
  57. #define A 0
  58. # define B 0
  59. # define C 0
  60. #if (A == B) || (A == C)
  61. #error good1
  62. #endif
  63. #if A == B || (A == C)
  64. #error good2
  65. #endif
  66. #if (A == B || (A == C))
  67. #error good3
  68. #endif
  69. #if (AA == BB) || (AA == CC)
  70. #error good4
  71. #endif
  72. #if AA == BB || (AA == CC)
  73. #error good5
  74. #endif
  75. #if ((AA == BB || (AA == CC)))
  76. #error good6
  77. #endif
  78. #if (A == B || (A == C)
  79. #error bad1
  80. #endif
  81. #if A == B || A == C)
  82. #error bad2
  83. #endif
  84. #if (A == B || (A == C)
  85. #error bad3
  86. #endif
  87. #if AA == BB) || (AA == CC)
  88. #error bad4
  89. #endif
  90. #if AA == BB || (AA == CC
  91. #error bad5
  92. #endif
  93. #if ((AA == BB || (AA == CC))))
  94. #error bad6
  95. #endif extra tokens
  96. int linenumber = __LINE__;
  97. int filenumber = __FILE__;
  98. int version = __VERSION__;
  99. #define PI (3.14)
  100. #define TWOPI (2.0 * PI)
  101. float twoPi = TWOPI;
  102. //#define PASTE(a,b) a ## b
  103. //float PASTE(tod, ay) = 17;
  104. "boo" // ERROR
  105. int a = length("aoenatuh"); // ERROR
  106. #define QUOTE "abcd" // okay
  107. 'int'; // ERROR
  108. #define SINGLE 'a' // okay
  109. // ERROR: all the following are reserved
  110. #define GL_
  111. #define GL_Macro 1
  112. #define __M
  113. #define M__
  114. #define ABC__DE abc
  115. #if 4
  116. #else extra
  117. #elif
  118. // ERROR elif after else
  119. #endif
  120. #if blah
  121. #if 0
  122. #else extra
  123. #ifdef M
  124. #else
  125. #else
  126. // ERROR else after else
  127. #endif extra
  128. #endif
  129. #endif
  130. #define m1(a,a) // ERROR
  131. #define m2(a,b)
  132. // okay
  133. #define m3 (a)
  134. #define m3 (a)
  135. // ERROR
  136. #define m4(b)
  137. #define m4
  138. // ERROR
  139. #define m5 (b)
  140. #define m5(b)
  141. // ERROR
  142. #define m6(a)
  143. #define m6(a,b)
  144. // ERROR (whitespace)
  145. #define m7 (a)
  146. #define m7 ( a)
  147. #define m80(a,b) is + exactly m3 the same
  148. #define m80(a,b) is + exactly m3 the same
  149. // ERROR
  150. #define m8(a,b) almost + exactly m3 the same
  151. #define m8(a,b) almost + exactly m3 thee same
  152. // ERROR
  153. #define m9(a,b,c) aoe
  154. #define m9(a,d,c) aoe
  155. #define n1 0xf
  156. int n = n1;
  157. #define f1 .08e-2Lf
  158. double f = f1;
  159. #undef __VERSION__
  160. #undef GL_ARB_texture_rectangle
  161. #
  162. #
  163. #
  164. ##
  165. # #
  166. # 0x25
  167. ####
  168. ####ff
  169. #########ff fg 0x25
  170. #pragma
  171. #pragma(aoent)
  172. # pragma
  173. #pragma STDGL
  174. #pragma optimize( on)
  175. #pragma optimize(off)
  176. #pragma debug( on)
  177. #pragma debug(off )
  178. #pragma optimize( on) anoteun
  179. #pragma optimize(off
  180. #pragma debug( on) (
  181. #pragma debug(off aoeua)
  182. #pragma optimize( on)
  183. #pragma optimize(off,)
  184. #pragma debug( on, aoeu)
  185. #pragma debugoff )
  186. #pragma aontheu natoeh uantheo uasotea noeahuonea uonethau onethuanoeth aunotehau noeth anthoeua anoethuantoeh uantoehu natoehu naoteh unotaehu noethua onetuh aou
  187. # \
  188. # \
  189. error good continuation
  190. #flizbit
  191. #define directive error
  192. #directive directive was expanded
  193. #line 12000
  194. #error line should be 12000
  195. #line 13000 7
  196. #error line should be 13000, string 7
  197. #define L1 14000
  198. #define L2 13
  199. #define F1 5
  200. #define F2 7
  201. #line L1 + L2
  202. #error line should be 14013, string 7
  203. #line L1 + L2 F1 + F2 // antoeuh sat comment
  204. #error line should be 14013, string 12
  205. #line L1 + L2 + F1 + F2
  206. #error line should be 14025, string 12
  207. #line 1234 F1 + F2 extra
  208. #define empty_extra
  209. #line 1235 F1 + F2 empty_extra
  210. #define moreEmpty empty_extra
  211. #line 1236 F1 + F2 moreEmpty empty_extra // okay, lots of nothin
  212. #line 1237 F1 + F2 moreEmpty empty_extra extra // ERROR, 'extra'
  213. #line 1238 F1 + F2 moreEmpty empty_extra
  214. #line 1239 empty_extra F1 empty_extra + empty_extra F2 empty_extra moreEmpty empty_extra
  215. #line (20000)
  216. #error line should be 20000
  217. #line (20000+10)
  218. #error line should be 20010
  219. #line +20020
  220. #error line should be 20020
  221. #define VAL1 1.0
  222. #define VAL2 2.0
  223. #define RES2 /* test a multiline
  224. comment in a macro definition */ (RES1 * VAL2)
  225. #define RES1 (VAL2 / VAL1)
  226. #define RES2 /* comment */(RES1 * VAL2)
  227. #define /* */SUM_VALUES (RES2 + RES1)
  228. void foo234()
  229. {
  230. gl_Position = vec4(SUM_VALUES);
  231. }
  232. // more whitespace recording tests
  233. #define SPACE_AT_END(a,b) spaceAtEndIsOkay
  234. #define SPACE_AT_END(a,b) spaceAtEndIsOkay // space at end
  235. #define SPACE_AT_BEGIN(a,b)spaceAtBeginIsOkay
  236. #define SPACE_AT_BEGIN(a,b) spaceAtBeginIsOkay
  237. // space in middle is an error
  238. #define SPACE_IN_MIDDLE(a,b) space +in middle
  239. #define SPACE_IN_MIDDLE(a,b) space + in middle
  240. #define FIRSTPART 17
  241. #define SECONDPART + 5
  242. #if FIRSTPART SECONDPART == 22
  243. #error good evaluation 1
  244. #endif
  245. #if moreEmpty FIRSTPART moreEmpty SECONDPART moreEmpty == moreEmpty 22 moreEmpty
  246. #error good evaluation 2
  247. #endif
  248. // ERRORS...
  249. #line 9000
  250. #if defined(OUNH
  251. #endif
  252. #if defined OUNH)
  253. #endif
  254. // recursion (okay)
  255. #define RECURSE RECURSE
  256. int RECURSE;
  257. #define R2 R1
  258. #define R1 R2
  259. #undef RECURSE
  260. int R1 = RECURSE;
  261. #define FOOOM(a,b) a + b
  262. int aoeua = FOOOM;
  263. #if FOOOM
  264. #endif
  265. #line 9500
  266. #if\376
  267. #endif
  268. #if \376
  269. #endif
  270. #if \377
  271. #endif
  272. #error\377
  273. #error \ 376
  274. #error \377
  275. // ERROR for macro expansion to yield 'defined'
  276. #line 9600
  277. #define DEF_MAC
  278. #define DEF_DEFINED defined
  279. #if DEF_DEFINED DEF_MAC
  280. #error DEF_DEFINED then
  281. #else
  282. #error DEF_DEFINED else
  283. #endif
  284. #line 10000
  285. #if 1
  286. #else
  287. // ERROR, missing #endif