Home | History | Annotate | Download | only in PCH
      1 // Without PCH
      2 // RUN: %clang_cc1 -fsyntax-only -verify -include %s -include %s %s
      3 
      4 // With PCH
      5 // RUN: %clang_cc1 -fsyntax-only -verify %s -chain-include %s -chain-include %s
      6 
      7 #ifndef HEADER1
      8 #define HEADER1
      9 //===----------------------------------------------------------------------===//
     10 
     11 namespace NS {
     12 
     13 template <class _Tp, _Tp __v>
     14 struct TS
     15 {
     16   static const _Tp value = __v;
     17 };
     18 
     19 template <class _Tp, _Tp __v>
     20 const _Tp TS<_Tp, __v>::value;
     21 
     22 TS<int, 2> g1;
     23 
     24 }
     25 
     26 //===----------------------------------------------------------------------===//
     27 #elif not defined(HEADER2)
     28 #define HEADER2
     29 #if !defined(HEADER1)
     30 #error Header inclusion order messed up
     31 #endif
     32 
     33 int g2 = NS::TS<int, 2>::value;
     34 
     35 //===----------------------------------------------------------------------===//
     36 #else
     37 //===----------------------------------------------------------------------===//
     38 
     39 // expected-warning@+1 {{reached main file}}
     40 #warning reached main file
     41 
     42 int g3 = NS::TS<int, 2>::value;
     43 
     44 //===----------------------------------------------------------------------===//
     45 #endif
     46