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