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