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