1 // PR c++/28259
2 // { dg-do compile }
3 
4 struct A
5 {
6   virtual A* foo();    // { dg-message "overridden" }
7 };
8 
9 struct B : virtual A;  // { dg-error "before" }
10 
11 struct C : A
12 {
13   virtual B* foo();    // { dg-error "invalid covariant" }
14 };
15 
foo()16 B* C::foo() { return 0; }
17