Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 namespace PR8640 {
      4   template<class T1> struct C1 {
      5     virtual void c1() {
      6       T1 t1 = 3;  // expected-error {{cannot initialize a variable}}
      7     }
      8   };
      9 
     10   template<class T2> struct C2 {
     11     void c2() {
     12       new C1<T2>();  // expected-note {{in instantiation of member function}}
     13     }
     14   };
     15 
     16   void f() {
     17     C2<int*> c2;
     18     c2.c2();  // expected-note {{in instantiation of member function}}
     19   }
     20 }
     21 
     22 namespace PR9325 {
     23   template<typename T>
     24   class Target
     25   {
     26   public:
     27     virtual T Value() const
     28     {
     29       return 1; // expected-error{{cannot initialize return object of type 'int *' with an rvalue of type 'int'}}
     30     }
     31   };
     32 
     33   template<typename T>
     34   struct Provider
     35   {
     36     static Target<T> Instance;
     37   };
     38 
     39   template<typename T>
     40   Target<T> Provider<T>::Instance; // expected-note{{in instantiation of}}
     41 
     42   void f()
     43   {
     44     Target<int*>* traits = &Provider<int*>::Instance; // expected-note{{requested here}}
     45   }
     46 }
     47 
     48 namespace PR10020 {
     49   struct MG {
     50     virtual void Accept(int) = 0;
     51   };
     52 
     53   template <typename Type>
     54   struct GMG : MG {
     55     void Accept(int i) {
     56       static_cast<Type *>(0)->Accept(i); // expected-error{{member reference base}}
     57     }
     58     static GMG* Method() { return &singleton; } // expected-note{{in instantiation of}}
     59     static GMG singleton;
     60   };
     61 
     62   template <typename Type>
     63   GMG<Type> GMG<Type>::singleton; // expected-note{{requested here}}
     64 
     65   void test(void) {
     66     GMG<int>::Method(); // expected-note{{in instantiation of}}
     67   }
     68 }
     69