1*dda56e4bSRichard Smith // RUN: %clang_cc1 -fsyntax-only -verify -std=c++0x %s 2*dda56e4bSRichard Smith 3*dda56e4bSRichard Smith // Classes. 4*dda56e4bSRichard Smith namespace Class { 5*dda56e4bSRichard Smith namespace NS { 6*dda56e4bSRichard Smith class C {}; // expected-note {{candidate}} 7*dda56e4bSRichard Smith } 8*dda56e4bSRichard Smith using namespace NS; 9*dda56e4bSRichard Smith class C : C {}; // expected-error {{reference to 'C' is ambiguous}} \ 10*dda56e4bSRichard Smith expected-note {{candidate}} 11*dda56e4bSRichard Smith } 12*dda56e4bSRichard Smith 13*dda56e4bSRichard Smith // Enumerations. 14*dda56e4bSRichard Smith enum E { 15*dda56e4bSRichard Smith EPtrSize = sizeof((E*)0) // ok, E is already declared 16*dda56e4bSRichard Smith }; 17*dda56e4bSRichard Smith 18*dda56e4bSRichard Smith // Alias declarations. clang implements the proposed resolution to N1044. 19*dda56e4bSRichard Smith namespace Alias { 20*dda56e4bSRichard Smith namespace NS { 21*dda56e4bSRichard Smith class C; 22*dda56e4bSRichard Smith } 23*dda56e4bSRichard Smith using namespace NS; 24*dda56e4bSRichard Smith using C = C; // ok, C = B::C 25*dda56e4bSRichard Smith using C = NS::C; // ok, same type 26*dda56e4bSRichard Smith } 27