1 // RUN: c-index-test core -print-source-symbols -- %s | FileCheck %s
2 // RUN: c-index-test core -print-source-symbols -ignore-macros -- %s | FileCheck %s -check-prefix=DISABLED
3 // DISABLED-NOT: macro/C
4 // DISABLED-NOT: XI
5 
6 // CHECK: [[@LINE+1]]:9 | macro/C | X1 | [[X1_USR:.*@macro@X1]] | Def |
7 #define X1 1
8 // CHECK: [[@LINE+1]]:9 | macro/C | DEF | [[DEF_USR:.*@macro@DEF]] | Def |
9 #define DEF(x) int x
10 // CHECK: [[@LINE+1]]:8 | macro/C | X1 | [[X1_USR]] | Undef |
11 #undef X1
12 
13 // CHECK: [[@LINE+1]]:9 | macro/C | C | [[C_USR:.*@macro@C]] | Def |
14 #define C 1
15 // CHECK: [[@LINE+1]]:5 | macro/C | C | [[C_USR]] | Ref |
16 #if C
17 #endif
18 // CHECK: [[@LINE+1]]:8 | macro/C | C | [[C_USR]] | Ref |
19 #ifdef C
20 #endif
21 // CHECK: [[@LINE+1]]:9 | macro/C | C | [[C_USR]] | Ref |
22 #ifndef C
23 #endif
24 // CHECK: [[@LINE+1]]:13 | macro/C | C | [[C_USR]] | Ref |
25 #if defined(C)
26 #endif
27 // CHECK: [[@LINE+1]]:14 | macro/C | C | [[C_USR]] | Ref |
28 #if !defined(C)
29 #endif
30 
31 // Nonexistent macros should not be included.
32 // CHECK-NOT: NOT_DEFINED
33 #ifdef NOT_DEFINED
34 #endif
35 #ifndef NOT_DEFINED
36 #endif
37 #if defined(NOT_DEFINED) && NOT_DEFINED
38 #elif !defined(NOT_DEFINED)
39 #endif
40 
41 // CHECK: [[@LINE+1]]:5 | macro/C | __LINE__ | c:@macro@__LINE__ | Ref |
42 #if __LINE__ == 41
43 #endif
44 
45 // CHECK: [[@LINE+2]]:1 | macro/C | DEF | [[DEF_USR]] | Ref |
46 // CHECK: [[@LINE+1]]:5 | variable/C | i | c:@i | {{.*}} | Def | rel: 0
47 DEF(i);
48