Clang Project

clang_source_code/test/Frontend/rewrite-includes.c
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
5A(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