bound promotion for super wildcard (? super A (bound extends A) == A)

This commit is contained in:
Anna Kozlova
2014-02-19 09:46:12 +01:00
parent f3bbc7af5a
commit a91c7f752d
3 changed files with 67 additions and 0 deletions
@@ -0,0 +1,55 @@
import java.io.Serializable;
interface Parametrized<T extends Number> {}
class Bug1<T extends Serializable>{
<I extends Number> Parametrized<I> foo(Parametrized<I> param) {
return null;
}
void bug1(Parametrized<? super T> param) {
foo(param);
}
}
class Bug2<T extends Integer>{
<I extends Number> Parametrized<I> foo(Parametrized<I> param) {
return null;
}
void bug1(Parametrized<? super T> param) {
foo(param);
}
}
class Test {
interface Parametrized<T extends Serializable> {}
class Bug1<T extends Serializable>{
<I extends Number> Parametrized<I> foo(Parametrized<I> param) {
return null;
}
void bug1(Parametrized<? super T> param) {
<error descr="Inferred type 'java.io.Serializable' for type parameter 'I' is not within its bound; should extend 'java.lang.Number'">foo(param)</error>;
}
}
class Bug2<T extends Integer>{
<I extends Number> Parametrized<I> foo(Parametrized<I> param) {
return null;
}
void bug1(Parametrized<? super T> param) {
<error descr="Inferred type 'java.io.Serializable' for type parameter 'I' is not within its bound; should extend 'java.lang.Number'">foo(param)</error>;
}
}
}