Home | History | Annotate | Download | only in Frontend
      1 // 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
      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 #/**/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){{$}}
     25 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     26 // CHECK-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
     27 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     28 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 1{{$}}
     29 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     30 // CHECK-NEXT: {{^}}#pragma clang system_header{{$}}
     31 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     32 // CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 3{{$}}
     33 // CHECK-NEXT: {{^}}included_line1{{$}}
     34 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     35 // CHECK-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
     36 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     37 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes2.h" 1 3{{$}}
     38 // CHECK-NEXT: {{^}}included_line2{{$}}
     39 // CHECK-NEXT: {{^}}# 4 "{{.*[/\\]Inputs[/\\]}}rewrite-includes1.h" 2 3{{$}}
     40 // CHECK-NEXT: {{^}}# 7 "{{.*}}rewrite-includes.c" 2{{$}}
     41 // CHECK-NEXT: {{^}}#ifdef FIRST{{$}}
     42 // CHECK-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
     43 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     44 // CHECK-NEXT: {{^}}#include HEADER{{$}}
     45 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     46 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes3.h" 1{{$}}
     47 // CHECK-NEXT: {{^}}included_line3{{$}}
     48 // CHECK-NEXT: {{^}}# 10 "{{.*}}rewrite-includes.c" 2{{$}}
     49 // CHECK-NEXT: {{^}}#else{{$}}
     50 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     51 // CHECK-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
     52 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     53 // CHECK-NEXT: {{^}}# 12 "{{.*}}rewrite-includes.c"{{$}}
     54 // CHECK-NEXT: {{^}}#endif{{$}}
     55 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     56 // CHECK-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
     57 // CHECK-NEXT: {{^}} {{$}}
     58 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     59 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes5.h" 1{{$}}
     60 // CHECK-NEXT: {{^}}included_line5{{$}}
     61 // CHECK-NEXT: {{^}}# 15 "{{.*}}rewrite-includes.c" 2{{$}}
     62 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     63 // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
     64 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     65 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h" 1{{$}}
     66 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     67 // CHECK-NEXT: {{^}}#pragma once{{$}}
     68 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     69 // CHECK-NEXT: {{^}}# 2 "{{.*[/\\]Inputs[/\\]}}rewrite-includes6.h"{{$}}
     70 // CHECK-NEXT: {{^}}included_line6{{$}}
     71 // CHECK-NEXT: {{^}}# 16 "{{.*}}rewrite-includes.c" 2{{$}}
     72 // CHECK-NEXT: {{^}} {{$}}
     73 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     74 // CHECK-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
     75 // CHECK-NEXT: {{^}}                                  continues */{{$}}
     76 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     77 // CHECK-NEXT: {{^}}# 19 "{{.*}}rewrite-includes.c"{{$}}
     78 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     79 // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
     80 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     81 // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs[/\\]}}rewrite-includes7.h" 1{{$}}
     82 // 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{{$}}
     87 // CHECK-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     88 // CHECK-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
     89 // CHECK-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     90 // 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){{$}}
     96 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
     97 // CHECKNL-NEXT: {{^}}#include "rewrite-includes1.h"{{$}}
     98 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
     99 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    100 // CHECKNL-NEXT: {{^}}#pragma clang system_header{{$}}
    101 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    102 // CHECKNL-NEXT: {{^}}included_line1{{$}}
    103 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    104 // CHECKNL-NEXT: {{^}}#include "rewrite-includes2.h"{{$}}
    105 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    106 // CHECKNL-NEXT: {{^}}included_line2{{$}}
    107 // CHECKNL-NEXT: {{^}}#ifdef FIRST{{$}}
    108 // CHECKNL-NEXT: {{^}}#define HEADER "rewrite-includes3.h"{{$}}
    109 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    110 // CHECKNL-NEXT: {{^}}#include HEADER{{$}}
    111 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    112 // CHECKNL-NEXT: {{^}}included_line3{{$}}
    113 // CHECKNL-NEXT: {{^}}#else{{$}}
    114 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    115 // CHECKNL-NEXT: {{^}}#include "rewrite-includes4.h"{{$}}
    116 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    117 // CHECKNL-NEXT: {{^}}#endif{{$}}
    118 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    119 // CHECKNL-NEXT: {{^}}#/**/include /**/ "rewrite-includes5.h" /**/ {{\\}}{{$}}
    120 // CHECKNL-NEXT: {{^}} {{$}}
    121 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    122 // CHECKNL-NEXT: {{^}}included_line5{{$}}
    123 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    124 // CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" // comment{{$}}
    125 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    126 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    127 // CHECKNL-NEXT: {{^}}#pragma once{{$}}
    128 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    129 // CHECKNL-NEXT: {{^}}included_line6{{$}}
    130 // CHECKNL-NEXT: {{^}} {{$}}
    131 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    132 // CHECKNL-NEXT: {{^}}#include "rewrite-includes6.h" /* comment{{$}}
    133 // CHECKNL-NEXT: {{^}}                                  continues */{{$}}
    134 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    135 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    136 // CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
    137 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    138 // CHECKNL-NEXT: {{^}}#ifndef REWRITE_INCLUDES_7{{$}}
    139 // CHECKNL-NEXT: {{^}}#define REWRITE_INCLUDES_7{{$}}
    140 // CHECKNL-NEXT: {{^}}included_line7{{$}}
    141 // CHECKNL-NEXT: {{^}}#endif{{$}}
    142 // CHECKNL-NEXT: {{^}}#if 0 /* expanded by -frewrite-includes */{{$}}
    143 // CHECKNL-NEXT: {{^}}#include "rewrite-includes7.h"{{$}}
    144 // CHECKNL-NEXT: {{^}}#endif /* expanded by -frewrite-includes */{{$}}
    145 // CHECKNL-NEXT: {{^}}// ENDCOMPARE{{$}}
    146