Eclipse compiler issue
Eclipse compiler issue
I am wondering if anyone can help me.
I have an issue with compiling some code in Eclipse but not with IntelliJ or javac.
I am using sneakyThrow to bubble a checked exception up through 2 streams.
Here is the smallest reproducible code I can make:
import java.io.IOException; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Example { public static void main(String[] args) throws IOException { List<List<Integer>> input = List.of(List.of(1, 2), List.of(2, 4)); // Should return any List whose elements are all even. List<List<Integer>> output = input.stream() .filter(bubblePredicate(o -> o.stream() .allMatch(bubblePredicate(i -> { if (i > 10) { throw new IOException("Number too large."); } return i % 2 == 0; })))) .collect(Collectors.toList()); System.out.println(output); } private interface ThrowingPredicate<S, E extends Exception> { boolean test(S s) throws E; } private static <S, E extends Exception> Predicate<S> bubblePredicate(ThrowingPredicate<S, E> callable) throws E { return s -> { try { return callable.test(s); } catch (Exception e) { sneakyThrow(e); return false; } }; } private static <E extends Throwable> void sneakyThrow(Exception exception) throws E { throw (E)exception; } }
Compiles and runs completely fine with javac 11.0.12
, but doesn't on Eclipse 4.21.0.I20210906-0500
nor Eclipse 4.27.0.20230309-1200
.
Has anyone encountered this before, or have any idea what I am misunderstanding?