The following program:
class A<T> {
Exception[] bar(A<? super Exception[]> x, A<? super Throwable[]> y){
return foo(x, y);
}
<T> T foo(A<? super T> x, A<? super T> y){
return null;
}
}
Crashes with SOE:
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at com.sun.tools.javac.code.Type.hasTag(Type.java:133)
at com.sun.tools.javac.code.Types$12.visitClassType(Types.java:1928)
at com.sun.tools.javac.code.Types$12.visitClassType(Types.java:1916)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:999)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4519)
at com.sun.tools.javac.code.Types.asSuper(Types.java:1913)
at com.sun.tools.javac.code.Types$4.visitClassType(Types.java:919)
at com.sun.tools.javac.code.Types$4.visitClassType(Types.java:840)
at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:999)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4519)
at com.sun.tools.javac.code.Types.isSubtype(Types.java:836)
at com.sun.tools.javac.code.Types.isSubtypeNoCapture(Types.java:810)
at com.sun.tools.javac.code.Types$4.visitType(Types.java:854)
at com.sun.tools.javac.code.Types$4.visitType(Types.java:840)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visitTypeVar(Types.java:4525)
at com.sun.tools.javac.code.Types$SimpleVisitor.visitCapturedType(Types.java:4570)
at com.sun.tools.javac.code.Type$CapturedType.accept(Type.java:1696)
at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4519)
at com.sun.tools.javac.code.Types.isSubtype(Types.java:836)
at com.sun.tools.javac.code.Types.isSubtypeNoCapture(Types.java:810)
at com.sun.tools.javac.code.Types.closureMin(Types.java:3561)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3752)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
at com.sun.tools.javac.code.Types.glbFlattened(Types.java:3773)
...