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: {{^}}// 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