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