blob: 546a2c44af2c6044ed5e768bd6c1f22cd912d715 [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"
21// ENDCOMPARE
22// CHECK: {{^}}// STARTCOMPARE{{$}}
23// CHECK-NEXT: {{^}}#define A(a,b) a ## b{{$}}
24// CHECK-NEXT: {{^}}A(1,2){{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000025// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000026// CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000027// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000028// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000029// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000030// CHECK-NEXT: {{^}}#pragma clang system_header{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000031// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000032// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000033// CHECK-NEXT: {{^}}included_line1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000034// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000035// CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000036// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000037// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes2.h" 1 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000038// CHECK-NEXT: {{^}}included_line2{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000039// CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 2 3{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000040// CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}}
41// CHECK-NEXT: {{^}}#ifdef FIRST{{$}}
42// CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000043// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000044// CHECK-NEXT: {{^}}#include HEADER{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000045// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000046// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes3.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000047// CHECK-NEXT: {{^}}included_line3{{$}}
48// CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}}
49// CHECK-NEXT: {{^}}#else{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000050// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000051// CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000052// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000053// CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}}
54// CHECK-NEXT: {{^}}#endif{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000055// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000056// CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
57// CHECK-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000058// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000059// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes5.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000060// CHECK-NEXT: {{^}}included_line5{{$}}
61// CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c" 2{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000062// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000063// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000064// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000065// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h" 1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000066// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000067// CHECK-NEXT: {{^}}#pragma once{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000068// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000069// CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h"{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000070// CHECK-NEXT: {{^}}included_line6{{$}}
71// CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}}
72// CHECK-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000073// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000074// CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
75// CHECK-NEXT: {{^}} continues */{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000076// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000077// CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000078// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000079// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000080// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
NAKAMURA Takumi575b66a2012-06-07 14:21:02 +000081// CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes7.h" 1{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000082// CHECK-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
83// CHECK-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
84// CHECK-NEXT: {{^}}included_line7{{$}}
85// CHECK-NEXT: {{^}}#endif{{$}}
86// CHECK-NEXT: {{^}}# 20 "{{.*}}rewrite-includes.c" 2{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000087// CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000088// CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000089// CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000090// CHECK-NEXT: {{^}}# 21 "{{.*}}rewrite-includes.c"{{$}}
91// CHECK-NEXT: {{^}}// ENDCOMPARE{{$}}
92
93// CHECKNL: {{^}}// STARTCOMPARE{{$}}
94// CHECKNL-NEXT: {{^}}#define A(a,b) a ## b{{$}}
95// CHECKNL-NEXT: {{^}}A(1,2){{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000096// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +000097// CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +000098// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
99// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000100// CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000101// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000102// CHECKNL-NEXT: {{^}}included_line1{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000103// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000104// CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000105// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000106// CHECKNL-NEXT: {{^}}included_line2{{$}}
107// CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}}
108// CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000109// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000110// CHECKNL-NEXT: {{^}}#include HEADER{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000111// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000112// CHECKNL-NEXT: {{^}}included_line3{{$}}
113// CHECKNL-NEXT: {{^}}#else{{$}}
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-includes4.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: {{^}}#endif{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000118// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000119// CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
120// CHECKNL-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000121// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000122// CHECKNL-NEXT: {{^}}included_line5{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000123// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000124// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000125// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
126// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000127// CHECKNL-NEXT: {{^}}#pragma once{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000128// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000129// CHECKNL-NEXT: {{^}}included_line6{{$}}
130// CHECKNL-NEXT: {{^}} {{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000131// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000132// CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
133// CHECKNL-NEXT: {{^}} continues */{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000134// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
135// CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000136// CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000137// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000138// CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
139// CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
140// CHECKNL-NEXT: {{^}}included_line7{{$}}
141// CHECKNL-NEXT: {{^}}#endif{{$}}
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-includes7.h"{{$}}
David Blaikie60ad16b2012-06-14 17:36:01 +0000144// CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
David Blaikie8c0b3782012-06-06 18:52:13 +0000145// CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}}