blob: 5266ad7947a405df73666dbc215f16aae14e2f18 [file] [log] [blame]
// Additional test case for issue #511:
// https://github.com/typetools/checker-framework/issues/511
class MyGeneric<T extends Number> {}
class MySuperClass {
public void method(MyGeneric<? extends Object> x) {}
}
public class Issue511 extends MySuperClass {
@Override
public void method(MyGeneric<?> x) {
super.method(x);
}
// public void method(MyGeneric<? extends Number> x) {}
// On the above method, javac issues the following error:
// Issue511.java:19: error: name clash: method(MyGeneric<? extends Number>) in Issue511 and
// method(MyGeneric<? extends Object>) in MySuperClass have the same erasure, yet neither
// overrides the other
// public void method(MyGeneric<? extends Number> x) {}
// ^
// 1 error
}
class Use {
MyGeneric<? extends Object> wildCardExtendsObject = new MyGeneric<>();
MyGeneric<? extends Number> wildCardExtendsNumber = wildCardExtendsObject;
MyGeneric<?> wildCardNoBound = new MyGeneric<>();
MyGeneric<? extends Number> wildCardExtendsNumber2 = wildCardNoBound;
}