chain-staticvar-instantiation.cpp 1.0 KB

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