// PR c++/28259
// { dg-do compile }

struct A
{
  virtual A* foo();    // { dg-error "overriding" }
};

struct B : virtual A;  // { dg-error "before" }

struct C : A
{
  virtual B* foo();    // { dg-error "invalid covariant" }
};

B* C::foo() { return 0; }
