blob: bf330a60a3d6b83c03b744ae042d0f476d0e9064 [file] [log] [blame]
David Blaikie60ad16b2012-06-14 17:36:01 +00001// RUN: %clang_cc1 -verify -E -frewrite-includes -DFIRST -I %S/Inputs %s -o - | FileCheck -strict-whitespace %s
2// RUN: %clang_cc1 -verify -E -frewrite-includes -P -DFIRST -I %S/Inputs %s -o - | FileCheck -check-prefix=CHECKNL -strict-whitespace %s
David Blaikie8c0b3782012-06-06 18:52:13 +00003// 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#/**/include /**/ "rewrite-includes5.h" /**/ \
14
15#include "rewrite-includes6.h" // comment
16
17#include "rewrite-includes6.h" /* comment
18 continues */
19#include "rewrite-includes7.h"
20#include "rewrite-includes7.h"
Benjamin Kramer596eea72013-04-16 19:08:41 +000021#include "rewrite-includes8.h"
David Blaikie8c0b3782012-06-06 18:52:13 +000022// ENDCOMPARE
23// CHECK: {{^}}// STARTCOMPARE{{$}}
24// CHECK-NEXT: {{^}}#define A(a,b) a ## b{{$}}
25// CHECK-NEXT: {{^}}A(1,2){{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000026// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000027// CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000028// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000029// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000030// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000031// CHECK-NEXT: {{^}}#pragma clang system_header{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000032// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000033// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000034// CHECK-NEXT: {{^}}included_line1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000035// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000036// CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000037// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000038// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes2.h" 1 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000039// CHECK-NEXT: {{^}}included_line2{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000040// CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 2 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000041// CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}}
42// CHECK-NEXT: {{^}}#ifdef FIRST{{$}}
43// CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000044// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000045// CHECK-NEXT: {{^}}#include HEADER{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000046// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000047// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes3.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000048// CHECK-NEXT: {{^}}included_line3{{$}}
49// CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}}
50// CHECK-NEXT: {{^}}#else{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000051// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000052// CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000053// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000054// CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}}
55// CHECK-NEXT: {{^}}#endif{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000056// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000057// CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
58// CHECK-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000059// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000060// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes5.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000061// CHECK-NEXT: {{^}}included_line5{{$}}
62// CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c" 2{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000063// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000064// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000065// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000066// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h" 1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000067// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000068// CHECK-NEXT: {{^}}#pragma once{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000069// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000070// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h"{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000071// CHECK-NEXT: {{^}}included_line6{{$}}
72// CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}}
73// CHECK-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000074// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000075// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
76// CHECK-NEXT: {{^}} continues */{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000077// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000078// CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000079// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000080// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000081// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000082// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes7.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000083// CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
84// CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
85// CHECK-NEXT: {{^}}included_line7{{$}}
86// CHECK-NEXT: {{^}}#endif{{$}}
87// CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c" 2{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000088// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000089// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000090// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000091// CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}}
Benjamin Kramer596eea72013-04-16 19:08:41 +000092// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
93// CHECK-NEXT: {{^}}#include "rewrite-includes8.h"{{$}}
94// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
95// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes8.h" 1{{$}}
96// CHECK-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes8.h>)*/{{$}}
97// CHECK-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}}
98// CHECK-NEXT: {{^}}#endif{{$}}
99// CHECK-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}}
100// CHECK-NEXT: {{^}}#endif{{$}}
101// CHECK-NEXT: {{^}}# 22 "{{.*}}rewrite-includes.c" 2{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000102// CHECK-NEXT: {{^}}// ENDCOMPARE{{$}}
103
104// CHECKNL: {{^}}// STARTCOMPARE{{$}}
105// CHECKNL-NEXT: {{^}}#define A(a,b) a ## b{{$}}
106// CHECKNL-NEXT: {{^}}A(1,2){{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000107// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000108// CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000109// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
110// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000111// CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000112// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000113// CHECKNL-NEXT: {{^}}included_line1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000114// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000115// CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000116// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000117// CHECKNL-NEXT: {{^}}included_line2{{$}}
118// CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}}
119// CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000120// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000121// CHECKNL-NEXT: {{^}}#include HEADER{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000122// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000123// CHECKNL-NEXT: {{^}}included_line3{{$}}
124// CHECKNL-NEXT: {{^}}#else{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000125// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000126// CHECKNL-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000127// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000128// CHECKNL-NEXT: {{^}}#endif{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000129// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000130// CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
131// CHECKNL-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000132// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000133// CHECKNL-NEXT: {{^}}included_line5{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000134// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000135// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000136// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
137// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000138// CHECKNL-NEXT: {{^}}#pragma once{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000139// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000140// CHECKNL-NEXT: {{^}}included_line6{{$}}
141// CHECKNL-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000142// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000143// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
144// CHECKNL-NEXT: {{^}} continues */{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000145// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
146// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000147// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000148// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000149// CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
150// CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
151// CHECKNL-NEXT: {{^}}included_line7{{$}}
152// CHECKNL-NEXT: {{^}}#endif{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000153// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000154// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000155// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
Benjamin Kramer596eea72013-04-16 19:08:41 +0000156// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
157// CHECKNL-NEXT: {{^}}#include "rewrite-includes8.h"{{$}}
158// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
159// CHECKNL-NEXT: {{^}}#if (1)/*__has_include_next(<rewrite-includes8.h>)*/{{$}}
160// CHECKNL-NEXT: {{^}}#elif (0)/*__has_include(<rewrite-includes8.hfail>)*/{{$}}
161// CHECKNL-NEXT: {{^}}#endif{{$}}
162// CHECKNL-NEXT: {{^}}#if !(1)/*__has_include("rewrite-includes8.h")*/{{$}}
163// CHECKNL-NEXT: {{^}}#endif{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000164// CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}}