1 | // RUN: not %clang_cc1 -verify -E -frewrite-includes -DFIRST -I %S/Inputs -I %S/Inputs/NextIncludes %s -o - | FileCheck -strict-whitespace %s |
2 | // RUN: not %clang_cc1 -verify -E -frewrite-includes -P -DFIRST -I %S/Inputs -I %S/Inputs/NextIncludes %s -o - | FileCheck -check-prefix=CHECKNL -strict-whitespace %s |
3 | // STARTCOMPARE |
4 | #define A(a,b) a ## b |
5 | A(1,2) |
6 | #include "rewrite-includes1.h" |
7 | #ifdef FIRST |
8 | #define HEADER "rewrite-includes3.h" |
9 | #include HEADER |
10 | #else |
11 | #include "rewrite-includes4.h" |
12 | #endif |
13 | // indented |
14 | #/**/include /**/ "rewrite-includes5.h" /**/ \ |
15 | |
16 | #include "rewrite-includes6.h" // comment |
17 | |
18 | #include "rewrite-includes6.h" /* comment |
19 | continues */ |
20 | #include "rewrite-includes7.h" |
21 | #include "rewrite-includes7.h" |
22 | #include "rewrite-includes8.h" |
23 | #include "rewrite-includes9.h" |
24 | // ENDCOMPARE |
25 | // CHECK: {{^}}# 1 "{{.*}}rewrite-includes.c"{{$}} |
26 | // CHECK: {{^}}// STARTCOMPARE{{$}} |
27 | // CHECK-NEXT: {{^}}#define A(a,b) a ## b{{$}} |
28 | // CHECK-NEXT: {{^}}A(1,2){{$}} |
29 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
30 | // CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}} |
31 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
32 | // CHECK-NEXT: {{^}}# 6 "{{.*}}rewrite-includes.c"{{$}} |
33 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 1{{$}} |
34 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
35 | // CHECK-NEXT: {{^}}#pragma clang system_header{{$}} |
36 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
37 | // CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 3{{$}} |
38 | // CHECK-NEXT: {{^}}included_line1{{$}} |
39 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
40 | // CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}} |
41 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
42 | // CHECK-NEXT: {{^}}# 3 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 3{{$}} |
43 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes2.h" 1 3{{$}} |
44 | // CHECK-NEXT: {{^}}included_line2{{$}} |
45 | // CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes1.h" 2 3{{$}} |
46 | // CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}} |
47 | // CHECK-NEXT: {{^}}#ifdef FIRST{{$}} |
48 | // CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}} |
49 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
50 | // CHECK-NEXT: {{^}}#include HEADER{{$}} |
51 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
52 | // CHECK-NEXT: {{^}}# 9 "{{.*}}rewrite-includes.c"{{$}} |
53 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes3.h" 1{{$}} |
54 | // CHECK-NEXT: {{^}}included_line3{{$}} |
55 | // CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}} |
56 | // CHECK-NEXT: {{^}}#else{{$}} |
57 | // CHECK-NEXT: {{^}}# 11 "{{.*}}rewrite-includes.c"{{$}} |
58 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
59 | // CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}} |
60 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
61 | // CHECK-NEXT: {{^}}# 11 "{{.*}}rewrite-includes.c"{{$}} |
62 | // CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}} |
63 | // CHECK-NEXT: {{^}}#endif{{$}} |
64 | // CHECK-NEXT: {{^}}# 13 "{{.*}}rewrite-includes.c"{{$}} |
65 | // CHECK-NEXT: {{^}} // indented{{$}} |
66 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
67 | // CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}} |
68 | // CHECK-NEXT: {{^}} {{$}} |
69 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
70 | // CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c"{{$}} |
71 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes5.h" 1{{$}} |
72 | // CHECK-NEXT: {{^}}included_line5{{$}} |
73 | // CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}} |
74 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
75 | // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}} |
76 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
77 | // CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c"{{$}} |
78 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes6.h" 1{{$}} |
79 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
80 | // CHECK-NEXT: {{^}}#pragma once{{$}} |
81 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
82 | // CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes6.h"{{$}} |
83 | // CHECK-NEXT: {{^}}included_line6{{$}} |
84 | // CHECK-NEXT: {{^}}# 17 "{{.*}}rewrite-includes.c" 2{{$}} |
85 | // CHECK-NEXT: {{^}} {{$}} |
86 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
87 | // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}} |
88 | // CHECK-NEXT: {{^}} continues */{{$}} |
89 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
90 | // CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}} |
91 | // CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c"{{$}} |
92 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
93 | // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} |
94 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
95 | // CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c"{{$}} |
96 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes7.h" 1{{$}} |
97 | // CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}} |
98 | // CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}} |
99 | // CHECK-NEXT: {{^}}included_line7{{$}} |
100 | // CHECK-NEXT: {{^}}#endif{{$}} |
101 | // CHECK-NEXT: {{^}}# 5 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes7.h"{{$}} |
102 | // CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c" 2{{$}} |
103 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
104 | // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} |
105 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
106 | // CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}} |
107 | // CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c"{{$}} |
108 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
109 | // CHECK-NEXT: {{^}}#include "rewrite-includes8.h"{{$}} |
110 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
111 | // CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c"{{$}} |
112 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes8.h" 1{{$}} |
113 | // CHECK-NEXT: {{^}}#if (0)/*__has_include_next(<rewrite-includes8.h>)*/{{$}} |
114 | // CHECK-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}} |
115 | // CHECK-NEXT: {{^}}# 3 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes8.h"{{$}} |
116 | // CHECK-NEXT: {{^}}#endif{{$}} |
117 | // CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes8.h"{{$}} |
118 | // CHECK-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}} |
119 | // CHECK-NEXT: {{^}}#endif{{$}} |
120 | // CHECK-NEXT: {{^}}# 6 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes8.h"{{$}} |
121 | // CHECK-NEXT: {{^}}# 23 "{{.*}}rewrite-includes.c" 2{{$}} |
122 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
123 | // CHECK-NEXT: {{^}}#include "rewrite-includes9.h"{{$}} |
124 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
125 | // CHECK-NEXT: {{^}}# 23 "{{.*}}rewrite-includes.c"{{$}} |
126 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes9.h" 1{{$}} |
127 | // CHECK-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes9.h>)*/{{$}} |
128 | // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
129 | // CHECK-NEXT: {{^}}#include_next <rewrite-includes9.h>{{$}} |
130 | // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
131 | // CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes9.h"{{$}} |
132 | // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|\\\\)NextIncludes(/|\\\\)}}rewrite-includes9.h" 1{{$}} |
133 | // CHECK-NEXT: {{^}}included_line9{{$}} |
134 | // CHECK-NEXT: {{^}}# 3 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes9.h" 2{{$}} |
135 | // CHECK-NEXT: {{^}}#endif{{$}} |
136 | // CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs(/|\\\\)}}rewrite-includes9.h"{{$}} |
137 | // CHECK-NEXT: {{^}}# 24 "{{.*}}rewrite-includes.c" 2{{$}} |
138 | // CHECK-NEXT: {{^}}// ENDCOMPARE{{$}} |
139 | |
140 | // CHECKNL: {{^}}// STARTCOMPARE{{$}} |
141 | // CHECKNL-NEXT: {{^}}#define A(a,b) a ## b{{$}} |
142 | // CHECKNL-NEXT: {{^}}A(1,2){{$}} |
143 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
144 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}} |
145 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
146 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
147 | // CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}} |
148 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
149 | // CHECKNL-NEXT: {{^}}included_line1{{$}} |
150 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
151 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}} |
152 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
153 | // CHECKNL-NEXT: {{^}}included_line2{{$}} |
154 | // CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}} |
155 | // CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}} |
156 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
157 | // CHECKNL-NEXT: {{^}}#include HEADER{{$}} |
158 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
159 | // CHECKNL-NEXT: {{^}}included_line3{{$}} |
160 | // CHECKNL-NEXT: {{^}}#else{{$}} |
161 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
162 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes4.h"{{$}} |
163 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
164 | // CHECKNL-NEXT: {{^}}#endif{{$}} |
165 | // CHECKNL-NEXT: {{^}} // indented{{$}} |
166 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
167 | // CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}} |
168 | // CHECKNL-NEXT: {{^}} {{$}} |
169 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
170 | // CHECKNL-NEXT: {{^}}included_line5{{$}} |
171 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
172 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}} |
173 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
174 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
175 | // CHECKNL-NEXT: {{^}}#pragma once{{$}} |
176 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
177 | // CHECKNL-NEXT: {{^}}included_line6{{$}} |
178 | // CHECKNL-NEXT: {{^}} {{$}} |
179 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
180 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}} |
181 | // CHECKNL-NEXT: {{^}} continues */{{$}} |
182 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
183 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
184 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} |
185 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
186 | // CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}} |
187 | // CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}} |
188 | // CHECKNL-NEXT: {{^}}included_line7{{$}} |
189 | // CHECKNL-NEXT: {{^}}#endif{{$}} |
190 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
191 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}} |
192 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
193 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
194 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes8.h"{{$}} |
195 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
196 | // CHECKNL-NEXT: {{^}}#if (0)/*__has_include_next(<rewrite-includes8.h>)*/{{$}} |
197 | // CHECKNL-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}} |
198 | // CHECKNL-NEXT: {{^}}#endif{{$}} |
199 | // CHECKNL-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}} |
200 | // CHECKNL-NEXT: {{^}}#endif{{$}} |
201 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
202 | // CHECKNL-NEXT: {{^}}#include "rewrite-includes9.h"{{$}} |
203 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
204 | // CHECKNL-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes9.h>)*/{{$}} |
205 | // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}} |
206 | // CHECKNL-NEXT: {{^}}#include_next <rewrite-includes9.h>{{$}} |
207 | // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}} |
208 | // CHECKNL-NEXT: {{^}}included_line9{{$}} |
209 | // CHECKNL-NEXT: {{^}}#endif{{$}} |
210 | // CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}} |
211 | |