1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
2 // C++0x N2914.
3 
4 struct B {
5   void f(char);
6   void g(char);
7   enum E { e };
8   union { int x; };
9 };
10 
11 class C {
12   int g();
13 };
14 
15 class D2 : public B {
16   using B::f;
17   using B::e;
18   using B::x;
19   using C::g; // expected-error{{using declaration refers into 'C::', which is not a base class of 'D2'}}
20 };
21 
22 namespace test1 {
23   struct Base {
24     int foo();
25   };
26 
27   struct Unrelated {
28     int foo();
29   };
30 
31   struct Subclass : Base {
32   };
33 
34   namespace InnerNS {
35     int foo();
36   }
37 
38   // We should be able to diagnose these without instantiation.
39   template <class T> struct C : Base {
40     using InnerNS::foo; // expected-error {{not a class}}
41     using Base::bar; // expected-error {{no member named 'bar'}}
42     using Unrelated::foo; // expected-error {{not a base class}}
43     using C::foo; // expected-error {{refers to its own class}}
44     using Subclass::foo; // expected-error {{not a base class}}
45   };
46 }
47