1// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
2// C++0x N2914.
3
4struct B {
5  void f(char);
6  void g(char);
7  enum E { e };
8  union { int x; };
9};
10
11class C {
12  int g();
13};
14
15class 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
22namespace 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