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