Home | History | Annotate | Download | only in SemaTemplate
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 // expected-no-diagnostics
      3 
      4 // PR5908
      5 template <typename Iterator>
      6 void Test(Iterator it) {
      7   *(it += 1);
      8 }
      9 
     10 namespace PR6045 {
     11   template<unsigned int r>
     12   class A
     13   {
     14     static const unsigned int member = r;
     15     void f();
     16   };
     17 
     18   template<unsigned int r>
     19   const unsigned int A<r>::member;
     20 
     21   template<unsigned int r>
     22   void A<r>::f()
     23   {
     24     unsigned k;
     25     (void)(k % member);
     26   }
     27 }
     28 
     29 namespace PR7198 {
     30   struct A
     31   {
     32     ~A() { }
     33   };
     34 
     35   template<typename T>
     36   struct B {
     37     struct C : A {};
     38     void f()
     39     {
     40       C c = C();
     41     }
     42   };
     43 }
     44 
     45 namespace PR7724 {
     46   template<typename OT> int myMethod()
     47   { return 2 && sizeof(OT); }
     48 }
     49 
     50 namespace test4 {
     51   template <typename T> T *addressof(T &v) {
     52     return reinterpret_cast<T*>(
     53              &const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
     54   }
     55 }
     56 
     57 namespace test5 {
     58   template <typename T> class chained_map {
     59     int k;
     60     void lookup() const {
     61       int &v = (int &)k;
     62     }
     63   };
     64 }
     65 
     66 namespace PR8795 {
     67   template <class _CharT> int test(_CharT t)
     68   {
     69     int data [] = {
     70       sizeof(_CharT) > sizeof(char)
     71     };
     72     return data[0];
     73   }
     74 }
     75 
     76 template<typename T> struct CastDependentIntToPointer {
     77   static void* f() {
     78     T *x;
     79     return ((void*)(((unsigned long)(x)|0x1ul)));
     80   }
     81 };
     82 
     83 // Regression test for crasher in r194540.
     84 namespace PR10837 {
     85   typedef void t(int);
     86   template<typename> struct A {
     87     void f();
     88     static t g;
     89   };
     90   t *p;
     91   template<typename T> void A<T>::f() {
     92     p = g;
     93   }
     94   template struct A<int>;
     95 }
     96 
     97 namespace PR18152 {
     98   template<int N> struct A {
     99     static const int n = {N};
    100   };
    101   template struct A<0>;
    102 }
    103