type arguments in bounds check: ensure capture conversion (IDEA-175899)

This commit is contained in:
Anna.Kozlova
2017-07-18 19:13:24 +02:00
parent 2cee5e8cdb
commit b59ffe20e4
3 changed files with 26 additions and 1 deletions
@@ -0,0 +1,20 @@
class EnumBug {
static class Enum<E extends Enum<E>> {
}
static class Option<T> extends Enum<Option<T>> {
}
static class EnumSet<E extends Enum<E>> {
static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {
return null;
}
}
public static void main(String[] args) {
EnumSet<<error descr="Type parameter 'EnumBug.Option' is not within its bound; should extend 'EnumBug.Enum<EnumBug.Option<?>>'">Option<?></error>> enumSet = EnumSet.<<error descr="Type parameter 'EnumBug.Option' is not within its bound; should extend 'EnumBug.Enum<EnumBug.Option<?>>'">Option<?></error>>noneOf(Option.class);
EnumSet<<error descr="Type parameter 'EnumBug.Option' is not within its bound; should extend 'EnumBug.Enum<EnumBug.Option>'">Option</error>> enumSetRaw = EnumSet.<Option>noneOf(Option.class);
}
}