// { dg-do compile }

struct A
{
  int i;
};

struct B
{
  int i;
};

struct C : A, B
{
  using A::i; // { dg-message "previous" }
  using B::i; // { dg-error "redeclaration" }
};

struct E
{
  typedef int type;
};

struct F
{
  typedef int type;
};

struct G : E, F
{
  using E::type; // { dg-message "previous" }
  using F::type; // { dg-error "redeclaration" }
};

struct H
{
  typedef int type;
};

struct I : H
{
  typedef int type; // { dg-message "previous" }
  using H::type; // { dg-error "conflicts" }
};

struct I2 : H
{
  using H::type; // { dg-message "previous" }
  typedef int type; // { dg-error "conflicts" }
};

struct J
{
  struct type {};
};

struct K : J
{
  struct type {}; // { dg-message "previous" }
  using J::type; // { dg-error "conflicts" }
};

struct L : J
{
  using J::type; // { dg-message "previous" }
  struct type {}; // { dg-error "conflicts" }
};

struct M
{
  typedef int type;
  struct type2 {};
};

struct N : M
{
  using M::type; // { dg-message "previous" }
  using M::type; // { dg-error "redeclaration" }
  using M::type2; // { dg-message "previous" }
  using M::type2; // { dg-error "redeclaration" }
};
