1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
// Test case for Issue 1442.
// https://github.com/typetools/checker-framework/issues/1442
public class Issue1442 {
protected void configure(SubConfig<SubMyClass>.SubConfigInner x) {
SubMyClass subMyClass = x.getT().getSubConfigInner().outerClassTypeVar();
}
static class MyClass<A extends MyClass<A>> {}
static class SubMyClass extends MyClass<SubMyClass> {}
static class Config<B extends MyClass<B>> {
class ConfigInner<T> {
public T getT() {
throw new RuntimeException();
}
}
}
static class SubConfig<C extends MyClass<C>> extends Config<C> {
public class SubConfigInner extends ConfigInner<Thing> {
public C outerClassTypeVar() {
throw new RuntimeException();
}
}
class Thing {
public SubConfigInner getSubConfigInner() {
throw new RuntimeException();
}
}
}
}
|