blob: 769ae602059a6b6295c684e207c335438fbbac51 [file] [log] [blame]
abstract class Super {
abstract SuperInner<?> a();
abstract static class SuperInner<T extends SuperInner<T>> {
abstract T b();
abstract Super c();
}
}
abstract class Sub extends Super {
// It is significant that this method specializes the
// return type. If this returns SuperInner, no crash happens.
@Override
abstract SubInner<?> a();
abstract static class SubInner<S extends SubInner<S>> extends Super.SuperInner<S> {
// Crashes with this overridden method and passes without it.
@Override
abstract Super c();
}
}