xref: /llvm-project/clang-tools-extra/test/pp-trace/pp-trace-conditional.cpp (revision 10f69948fb9d9c266bd80c81011e4e951743f6ed)
1 // RUN: pp-trace -callbacks '*,-FileChanged' %s -- -undef -target x86_64 -std=c++11 | FileCheck --strict-whitespace %s
2 
3 #if 1
4 #endif
5 
6 #if 0
7 #endif
8 
9 #if 1
10 #else
11 #endif
12 
13 #if 0
14 #else
15 #endif
16 
17 #if 1
18 #elif 1
19 #endif
20 #if 1
21 #elif 0
22 #endif
23 
24 #if 0
25 #elif 1
26 #endif
27 #if 0
28 #elif 0
29 #endif
30 #if 1
31 #elif 1
32 #endif
33 #if 1
34 #elif 0
35 #endif
36 
37 #if 0
38 #elif 1
39 #else
40 #endif
41 #if 0
42 #elif 0
43 #else
44 #endif
45 #if 1
46 #elif 1
47 #else
48 #endif
49 #if 1
50 #elif 0
51 #else
52 #endif
53 
54 #define MACRO 1
55 #ifdef MACRO
56 #endif
57 #ifdef NO_MACRO
58 #endif
59 #ifndef MACRO
60 #endif
61 #ifndef NO_MACRO
62 #endif
63 
64 // CHECK: ---
65 // CHECK-NEXT: - Callback: MacroDefined
66 // CHECK:        MacroNameTok: __STDC__
67 // CHECK-NEXT:   MacroDirective: MD_Define
68 // CHECK-NEXT: - Callback: MacroDefined
69 // CHECK:        MacroNameTok: __STDC_HOSTED__
70 // CHECK-NEXT:   MacroDirective: MD_Define
71 // CHECK-NEXT: - Callback: MacroDefined
72 // CHECK:        MacroNameTok: __cplusplus
73 // CHECK-NEXT:   MacroDirective: MD_Define
74 // CHECK-NEXT: - Callback: MacroDefined
75 // CHECK:        MacroNameTok: __STDC_UTF_16__
76 // CHECK-NEXT:   MacroDirective: MD_Define
77 // CHECK-NEXT: - Callback: MacroDefined
78 // CHECK:        MacroNameTok: __STDC_UTF_32__
79 // CHECK-NEXT:   MacroDirective: MD_Define
80 // CHECK:      - Callback: If
81 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:3:2"
82 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:3:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:3:5"]
83 // CHECK-NEXT:   ConditionValue: CVK_True
84 // CHECK-NEXT: - Callback: Endif
85 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:4:2"
86 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:3:2"
87 // CHECK-NEXT: - Callback: If
88 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:6:2"
89 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:6:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:6:5"]
90 // CHECK-NEXT:   ConditionValue: CVK_False
91 // CHECK-NEXT: - Callback: Endif
92 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:7:2"
93 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:6:2"
94 // CHECK-NEXT: - Callback: SourceRangeSkipped
95 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:6:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:7:2"]
96 // CHECK-NEXT: - Callback: If
97 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:9:2"
98 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:9:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:9:5"]
99 // CHECK-NEXT:   ConditionValue: CVK_True
100 // CHECK-NEXT: - Callback: Else
101 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:10:2"
102 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:9:2"
103 // CHECK-NEXT: - Callback: Endif
104 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:11:2"
105 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:9:2"
106 // CHECK-NEXT: - Callback: SourceRangeSkipped
107 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:10:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:11:2"]
108 // CHECK-NEXT: - Callback: If
109 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:2"
110 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:5"]
111 // CHECK-NEXT:   ConditionValue: CVK_False
112 // CHECK-NEXT: - Callback: Else
113 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:14:2"
114 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:2"
115 // CHECK-NEXT: - Callback: SourceRangeSkipped
116 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:14:2"]
117 // CHECK-NEXT: - Callback: Endif
118 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:15:2"
119 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:13:2"
120 // CHECK-NEXT: - Callback: If
121 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:17:2"
122 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:17:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:17:5"]
123 // CHECK-NEXT:   ConditionValue: CVK_True
124 // CHECK-NEXT: - Callback: Elif
125 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:18:2"
126 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:18:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:18:8"]
127 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
128 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:17:2"
129 // CHECK-NEXT: - Callback: Endif
130 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:19:2"
131 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:17:2"
132 // CHECK-NEXT: - Callback: SourceRangeSkipped
133 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:18:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:19:2"]
134 // CHECK-NEXT: - Callback: If
135 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:20:2"
136 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:20:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:20:5"]
137 // CHECK-NEXT:   ConditionValue: CVK_True
138 // CHECK-NEXT: - Callback: Elif
139 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:21:2"
140 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:21:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:21:8"]
141 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
142 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:20:2"
143 // CHECK-NEXT: - Callback: Endif
144 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:22:2"
145 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:20:2"
146 // CHECK-NEXT: - Callback: SourceRangeSkipped
147 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:21:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:22:2"]
148 // CHECK-NEXT: - Callback: If
149 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:2"
150 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:5"]
151 // CHECK-NEXT:   ConditionValue: CVK_False
152 // CHECK-NEXT: - Callback: Elif
153 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:25:2"
154 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:25:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:25:7"]
155 // CHECK-NEXT:   ConditionValue: CVK_True
156 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:2"
157 // CHECK-NEXT: - Callback: SourceRangeSkipped
158 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:25:2"]
159 // CHECK-NEXT: - Callback: Endif
160 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:26:2"
161 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:24:2"
162 // CHECK-NEXT: - Callback: If
163 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:2"
164 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:5"]
165 // CHECK-NEXT:   ConditionValue: CVK_False
166 // CHECK-NEXT: - Callback: Elif
167 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:28:2"
168 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:28:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:28:7"]
169 // CHECK-NEXT:   ConditionValue: CVK_False
170 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:2"
171 // CHECK-NEXT: - Callback: Endif
172 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:29:2"
173 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:2"
174 // CHECK-NEXT: - Callback: SourceRangeSkipped
175 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:27:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:29:2"]
176 // CHECK-NEXT: - Callback: If
177 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:30:2"
178 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:30:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:30:5"]
179 // CHECK-NEXT:   ConditionValue: CVK_True
180 // CHECK-NEXT: - Callback: Elif
181 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:31:2"
182 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:31:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:31:8"]
183 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
184 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:30:2"
185 // CHECK-NEXT: - Callback: Endif
186 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:32:2"
187 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:30:2"
188 // CHECK-NEXT: - Callback: SourceRangeSkipped
189 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:31:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:32:2"]
190 // CHECK-NEXT: - Callback: If
191 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:33:2"
192 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:33:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:33:5"]
193 // CHECK-NEXT:   ConditionValue: CVK_True
194 // CHECK-NEXT: - Callback: Elif
195 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:34:2"
196 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:34:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:34:8"]
197 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
198 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:33:2"
199 // CHECK-NEXT: - Callback: Endif
200 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:35:2"
201 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:33:2"
202 // CHECK-NEXT: - Callback: SourceRangeSkipped
203 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:34:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:35:2"]
204 // CHECK-NEXT: - Callback: If
205 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:2"
206 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:5"]
207 // CHECK-NEXT:   ConditionValue: CVK_False
208 // CHECK-NEXT: - Callback: Elif
209 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:38:2"
210 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:38:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:38:7"]
211 // CHECK-NEXT:   ConditionValue: CVK_True
212 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:2"
213 // CHECK-NEXT: - Callback: SourceRangeSkipped
214 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:38:2"]
215 // CHECK-NEXT: - Callback: Else
216 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:39:2"
217 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:2"
218 // CHECK-NEXT: - Callback: Endif
219 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:40:2"
220 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:37:2"
221 // CHECK-NEXT: - Callback: SourceRangeSkipped
222 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:39:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:40:2"]
223 // CHECK-NEXT: - Callback: If
224 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:2"
225 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:5"]
226 // CHECK-NEXT:   ConditionValue: CVK_False
227 // CHECK-NEXT: - Callback: Elif
228 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:42:2"
229 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:42:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:42:7"]
230 // CHECK-NEXT:   ConditionValue: CVK_False
231 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:2"
232 // CHECK-NEXT: - Callback: Else
233 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:43:2"
234 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:2"
235 // CHECK-NEXT: - Callback: SourceRangeSkipped
236 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:43:2"]
237 // CHECK-NEXT: - Callback: Endif
238 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:44:2"
239 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:41:2"
240 // CHECK-NEXT: - Callback: If
241 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:45:2"
242 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:45:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:45:5"]
243 // CHECK-NEXT:   ConditionValue: CVK_True
244 // CHECK-NEXT: - Callback: Elif
245 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:46:2"
246 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:46:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:46:8"]
247 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
248 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:45:2"
249 // CHECK-NEXT: - Callback: Endif
250 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:48:2"
251 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:45:2"
252 // CHECK-NEXT: - Callback: SourceRangeSkipped
253 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:46:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:48:2"]
254 // CHECK-NEXT: - Callback: If
255 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:49:2"
256 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:49:5", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:49:5"]
257 // CHECK-NEXT:   ConditionValue: CVK_True
258 // CHECK-NEXT: - Callback: Elif
259 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:50:2"
260 // CHECK-NEXT:   ConditionRange: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:50:7", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:50:8"]
261 // CHECK-NEXT:   ConditionValue: CVK_NotEvaluated
262 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:49:2"
263 // CHECK-NEXT: - Callback: Endif
264 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:52:2"
265 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:49:2"
266 // CHECK-NEXT: - Callback: SourceRangeSkipped
267 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:50:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:52:2"]
268 // CHECK-NEXT: - Callback: MacroDefined
269 // CHECK-NEXT:   MacroNameTok: MACRO
270 // CHECK-NEXT:   MacroDirective: MD_Define
271 // CHECK-NEXT: - Callback: Ifdef
272 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:55:2"
273 // CHECK-NEXT:   MacroNameTok: MACRO
274 // CHECK-NEXT:   MacroDefinition: [(local)]
275 // CHECK-NEXT: - Callback: Endif
276 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:56:2"
277 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:55:2"
278 // CHECK-NEXT: - Callback: Ifdef
279 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:57:2"
280 // CHECK-NEXT:   MacroNameTok: NO_MACRO
281 // CHECK-NEXT:   MacroDefinition: []
282 // CHECK-NEXT: - Callback: Endif
283 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:58:2"
284 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:57:2"
285 // CHECK-NEXT: - Callback: SourceRangeSkipped
286 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:57:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:58:2"]
287 // CHECK-NEXT: - Callback: Ifndef
288 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:59:2"
289 // CHECK-NEXT:   MacroNameTok: MACRO
290 // CHECK-NEXT:   MacroDefinition: [(local)]
291 // CHECK-NEXT: - Callback: Endif
292 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:60:2"
293 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:59:2"
294 // CHECK-NEXT: - Callback: SourceRangeSkipped
295 // CHECK-NEXT:   Range: ["{{.*}}{{[/\\]}}pp-trace-conditional.cpp:59:1", "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:60:2"]
296 // CHECK-NEXT: - Callback: Ifndef
297 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:61:2"
298 // CHECK-NEXT:   MacroNameTok: NO_MACRO
299 // CHECK-NEXT:   MacroDefinition: []
300 // CHECK-NEXT: - Callback: Endif
301 // CHECK-NEXT:   Loc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:62:2"
302 // CHECK-NEXT:   IfLoc: "{{.*}}{{[/\\]}}pp-trace-conditional.cpp:61:2"
303 // CHECK-NEXT: - Callback: EndOfMainFile
304 // CHECK-NEXT: ...
305