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