summaryrefslogtreecommitdiffstats
path: root/tests/preprocessor/special-macro-complex.slang
blob: a2ea962e1435845eb29ceb7bf23ee7ccc94f59c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//DIAGNOSTIC_TEST:SIMPLE:-E

// Testing of handling of __LINE__ in macros
// Pasting, and some other aspects.


// Lets try some macro pasting. NOTE strictly speaking we need CONCAT2 (as tested on other compilers, but Slang does not indicating a preprocessor bug!)
#define CONCAT2(x, y) x ## y
#define CONCAT(x, y) CONCAT2(x, y)

CONCAT(Thing, __LINE__)

// Lets see if works okay in conditionals

#if __LINE__ == 15
Yeppers
#else
Nopers
#endif

// Lets try a paste in a conditional
#if CONCAT(__LINE__, __LINE__) == 2222
PasteConditional
#endif

// Lets check that we pick up the nominal line
#line 10
__LINE__

// Reset the line numbering
#line default

// __LINE__ number will be for the macro invocation, not the expansion

#define SOMEMACRO __LINE__

SOMEMACRO