Home | History | Annotate | Download | only in SemaTemplate
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 
      3 // PR5868
      4 struct T0 {
      5   int x;
      6   union {
      7     void *m0;
      8   };
      9 };
     10 template <typename T>
     11 struct T1 : public T0, public T { //expected-warning{{direct base 'T0' is inaccessible due to ambiguity:\n    struct T1<struct A> -> struct T0\n    struct T1<struct A> -> struct A -> struct T0}}
     12   void f0() {
     13     m0 = 0; // expected-error{{ambiguous conversion}}
     14   }
     15 };
     16 
     17 struct A : public T0 { };
     18 
     19 void f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}} expected-note{{in instantiation of template class 'T1<A>' requested here}}
     20 
     21 namespace rdar8635664 {
     22   template<typename T>
     23   struct X {
     24     struct inner;
     25 
     26     struct inner {
     27       union {
     28         int x;
     29         float y;
     30       };
     31 
     32       typedef T type;
     33     };
     34   };
     35 
     36   void test() {
     37     X<int>::inner i;
     38     i.x = 0;
     39   }
     40 }
     41