Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -verify %s
      2 namespace foo {
      3   namespace wibble {
      4     struct x { int y; };
      5 
      6     namespace bar {
      7       namespace wonka {
      8         struct x {
      9           struct y { };
     10         };
     11       }
     12     }
     13   }
     14 }
     15 
     16 namespace bar {
     17   typedef int y;
     18 
     19   struct incomplete; // expected-note{{forward declaration of 'bar::incomplete'}}
     20 }
     21 void test() {
     22   foo::wibble::x a;
     23   ::bar::y b;
     24   a + b; // expected-error{{invalid operands to binary expression ('foo::wibble::x' and '::bar::y' (aka 'int'))}}
     25 
     26   ::foo::wibble::bar::wonka::x::y c;
     27   c + b; // expected-error{{invalid operands to binary expression ('::foo::wibble::bar::wonka::x::y' and '::bar::y' (aka 'int'))}}
     28 
     29   (void)sizeof(bar::incomplete); // expected-error{{invalid application of 'sizeof' to an incomplete type 'bar::incomplete'}}
     30 }
     31 
     32 int ::foo::wibble::bar::wonka::x::y::* ptrmem;
     33 
     34