retrolambda
retrolambda copied to clipboard
Type-Use Annotations in Catch clause cause ArrayIndexOutOfBounds exception
I ran into the following problem while trying to "retrolambdify" my code.
Error! Failed to run Retrolambda
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at net.orfjackal.retrolambda.asm.tree.MethodNode.visitTryCatchAnnotation(MethodNode.java:550)
at net.orfjackal.retrolambda.asm.MethodVisitor.visitTryCatchAnnotation(MethodVisitor.java:761)
at net.orfjackal.retrolambda.asm.ClassReader.readTypeAnnotations(ClassReader.java:1641)
at net.orfjackal.retrolambda.asm.ClassReader.readCode(ClassReader.java:1186)
at net.orfjackal.retrolambda.asm.ClassReader.readMethod(ClassReader.java:1017)
at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:693)
at net.orfjackal.retrolambda.asm.ClassReader.accept(ClassReader.java:506)
at net.orfjackal.retrolambda.Transformers.backportInterface(Transformers.java:64)
at net.orfjackal.retrolambda.Retrolambda.run(Retrolambda.java:74)
at net.orfjackal.retrolambda.Main.main(Main.java:26)
It is caused by the following code:
public default Consumer<T> suppressExceptions(Consumer<? super Exception> handler) {
return object -> {
try {
consume(object);
} catch (@Nonnull Exception exception) {
handler.consume(exception);
}
};
}
If I remove the @Nonnull annotation in the catch clause, retrolambda works.