123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- #version 400
- #define ON
- float sum = 0.0;
- void main()
- {
- #ifdef ON
- //yes
- sum += 1.0;
- #endif
- #ifdef OFF
- //no
- sum += 20.0;
- #endif
- #if defined(ON)
- //yes
- sum += 300.0;
- #endif
- #if defined(OFF)
- //no
- sum += 4000.0;
- #endif
- #if !defined(ON)
- //no
- sum += 50000.0;
- #endif
- #ifndef OFF
- //yes
- sum += 600000.0;
- #else
- //no
- sum += 0.6;
- #endif
- #if defined(ON) && defined(OFF)
- //no
- sum += 0.7;
- #elif !defined(OFF)
- //yes
- sum += 7000000.0;
- #endif
- #if defined(ON) && !defined(OFF)
- //yes
- sum += 80000000.0;
- #endif
- #if defined(OFF) || defined(ON)
- //yes
- sum += 900000000.0;
- #endif
- #if NEVER_DEFINED
- //no
- sum += 0.04;
- #else
- sum += 0.05;
- #endif
- // sum should be 987600301.7
- gl_Position = vec4(sum);
- }
- #define A 0
- # define B 0
- # define C 0
- #if (A == B) || (A == C)
- #error good1
- #endif
- #if A == B || (A == C)
- #error good2
- #endif
- #if (A == B || (A == C))
- #error good3
- #endif
- #if (AA == BB) || (AA == CC)
- #error good4
- #endif
- #if AA == BB || (AA == CC)
- #error good5
- #endif
- #if ((AA == BB || (AA == CC)))
- #error good6
- #endif
- #if (A == B || (A == C)
- #error bad1
- #endif
- #if A == B || A == C)
- #error bad2
- #endif
- #if (A == B || (A == C)
- #error bad3
- #endif
- #if AA == BB) || (AA == CC)
- #error bad4
- #endif
- #if AA == BB || (AA == CC
- #error bad5
- #endif
- #if ((AA == BB || (AA == CC))))
- #error bad6
- #endif extra tokens
- int linenumber = __LINE__;
- int filenumber = __FILE__;
- int version = __VERSION__;
- #define PI (3.14)
- #define TWOPI (2.0 * PI)
- float twoPi = TWOPI;
- //#define PASTE(a,b) a ## b
- //float PASTE(tod, ay) = 17;
- "boo" // ERROR
- int a = length("aoenatuh"); // ERROR
- #define QUOTE "abcd" // okay
- 'int'; // ERROR
- #define SINGLE 'a' // okay
- // ERROR: all the following are reserved
- #define GL_
- #define GL_Macro 1
- #define __M
- #define M__
- #define ABC__DE abc
- #if 4
- #else extra
- #elif
- // ERROR elif after else
- #endif
- #if blah
- #if 0
- #else extra
- #ifdef M
- #else
- #else
- // ERROR else after else
- #endif extra
- #endif
- #endif
- #define m1(a,a) // ERROR
- #define m2(a,b)
- // okay
- #define m3 (a)
- #define m3 (a)
- // ERROR
- #define m4(b)
- #define m4
- // ERROR
- #define m5 (b)
- #define m5(b)
- // ERROR
- #define m6(a)
- #define m6(a,b)
- // ERROR (whitespace)
- #define m7 (a)
- #define m7 ( a)
- #define m80(a,b) is + exactly m3 the same
- #define m80(a,b) is + exactly m3 the same
- // ERROR
- #define m8(a,b) almost + exactly m3 the same
- #define m8(a,b) almost + exactly m3 thee same
- // ERROR
- #define m9(a,b,c) aoe
- #define m9(a,d,c) aoe
- #define n1 0xf
- int n = n1;
- #define f1 .08e-2Lf
- double f = f1;
- #undef __VERSION__
- #undef GL_ARB_texture_rectangle
- #
- #
- #
- ##
- # #
- # 0x25
- ####
- ####ff
- #########ff fg 0x25
- #pragma
- #pragma(aoent)
- # pragma
- #pragma STDGL
- #pragma optimize( on)
- #pragma optimize(off)
- #pragma debug( on)
- #pragma debug(off )
- #pragma optimize( on) anoteun
- #pragma optimize(off
- #pragma debug( on) (
- #pragma debug(off aoeua)
- #pragma optimize( on)
- #pragma optimize(off,)
- #pragma debug( on, aoeu)
- #pragma debugoff )
- #pragma aontheu natoeh uantheo uasotea noeahuonea uonethau onethuanoeth aunotehau noeth anthoeua anoethuantoeh uantoehu natoehu naoteh unotaehu noethua onetuh aou
- # \
- # \
- error good continuation
- #flizbit
- #define directive error
- #directive directive was expanded
- #line 12000
- #error line should be 12000
- #line 13000 7
- #error line should be 13000, string 7
- #define L1 14000
- #define L2 13
- #define F1 5
- #define F2 7
- #line L1 + L2
- #error line should be 14013, string 7
- #line L1 + L2 F1 + F2 // antoeuh sat comment
- #error line should be 14013, string 12
- #line L1 + L2 + F1 + F2
- #error line should be 14025, string 12
- #line 1234 F1 + F2 extra
- #define empty_extra
- #line 1235 F1 + F2 empty_extra
- #define moreEmpty empty_extra
- #line 1236 F1 + F2 moreEmpty empty_extra // okay, lots of nothin
- #line 1237 F1 + F2 moreEmpty empty_extra extra // ERROR, 'extra'
- #line 1238 F1 + F2 moreEmpty empty_extra
- #line 1239 empty_extra F1 empty_extra + empty_extra F2 empty_extra moreEmpty empty_extra
- #line (20000)
- #error line should be 20000
- #line (20000+10)
- #error line should be 20010
- #line +20020
- #error line should be 20020
- #define VAL1 1.0
- #define VAL2 2.0
- #define RES2 /* test a multiline
- comment in a macro definition */ (RES1 * VAL2)
- #define RES1 (VAL2 / VAL1)
- #define RES2 /* comment */(RES1 * VAL2)
- #define /* */SUM_VALUES (RES2 + RES1)
- void foo234()
- {
- gl_Position = vec4(SUM_VALUES);
- }
- // more whitespace recording tests
- #define SPACE_AT_END(a,b) spaceAtEndIsOkay
- #define SPACE_AT_END(a,b) spaceAtEndIsOkay // space at end
- #define SPACE_AT_BEGIN(a,b)spaceAtBeginIsOkay
- #define SPACE_AT_BEGIN(a,b) spaceAtBeginIsOkay
- // space in middle is an error
- #define SPACE_IN_MIDDLE(a,b) space +in middle
- #define SPACE_IN_MIDDLE(a,b) space + in middle
- #define FIRSTPART 17
- #define SECONDPART + 5
- #if FIRSTPART SECONDPART == 22
- #error good evaluation 1
- #endif
- #if moreEmpty FIRSTPART moreEmpty SECONDPART moreEmpty == moreEmpty 22 moreEmpty
- #error good evaluation 2
- #endif
- // ERRORS...
- #line 9000
- #if defined(OUNH
- #endif
- #if defined OUNH)
- #endif
- // recursion (okay)
- #define RECURSE RECURSE
- int RECURSE;
- #define R2 R1
- #define R1 R2
- #undef RECURSE
- int R1 = RECURSE;
- #define FOOOM(a,b) a + b
- int aoeua = FOOOM;
- #if FOOOM
- #endif
- #line 9500
- #if\376
- #endif
- #if \376
- #endif
- #if \377
- #endif
- #error\377
- #error \ 376
- #error \377
- // ERROR for macro expansion to yield 'defined'
- #line 9600
- #define DEF_MAC
- #define DEF_DEFINED defined
- #if DEF_DEFINED DEF_MAC
- #error DEF_DEFINED then
- #else
- #error DEF_DEFINED else
- #endif
- #line 10000
- #if 1
- #else
- // ERROR, missing #endif
|