Given:
import java.lang.annotation.Annotation;
import java.util.stream.Stream;
interface AnnotationLiteral extends Annotation {
@Override
@SuppressWarnings("unchecked")
default Class<? extends Annotation> annotationType() {
return (Class<? extends Annotation>) Stream.of(getClass().getInterfaces())
.filter(Annotation.class::isAssignableFrom)
.filter(iface -> !iface.equals(AnnotationLiteral.class))
.findFirst()
.orElseThrow();
}
}
When compiling with:
Apache Maven 3.9.15 (98b2cdbfdb5f1ac8781f537ea9acccaed7922349)
Maven home: /opt/homebrew/Cellar/maven/3.9.15/libexec
Java version: 25.0.2, vendor: Homebrew, runtime: /opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "26.4.1", arch: "aarch64", family: "mac"
Then unfortunately:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.15.0:compile (default-compile) on project common-processor: Compilation failure
[ERROR] /Users/sven/work/java/xertz-helpers/common/processor/src/main/java/io/xertz/helpers/common/processor/AnnotationLiteral.java:[14,72] An unhandled exception was thrown by the Error Prone static analysis plugin.
[ERROR] Please report this at https://github.com/google/error-prone/issues/new and include the following, as well as a reproducing code sample (if possible):
[ERROR]
[ERROR] error-prone version: 2.49.0
[ERROR] BugPattern: GetClassOnAnnotation
[ERROR] Stack Trace:
[ERROR] java.lang.NullPointerException: Cannot invoke com.sun.tools.javac.util.JCDiagnostic$DiagnosticPosition.getEndPosition(EndPosTable)int/invokeInterface with null receiver
[ERROR] at java.base/java.lang.invoke.DirectMethodHandle$Interface.checkReceiver(DirectMethodHandle.java:456)
[ERROR] at com.google.errorprone.fixes.ErrorProneEndPosTable.lambda$create$0(ErrorProneEndPosTable.java:116)
[ERROR] at com.google.errorprone.fixes.ErrorProneEndPosTable.getEndPosition(ErrorProneEndPosTable.java:143)
[ERROR] at com.google.errorprone.fixes.ErrorProneEndPosTable.getEndPosition(ErrorProneEndPosTable.java:135)
[ERROR] at com.google.errorprone.VisitorState.getEndPosition(VisitorState.java:563)
[ERROR] at com.google.errorprone.bugpatterns.GetClassOnAnnotation.matchMethodInvocation(GetClassOnAnnotation.java:51)
[ERROR] at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:541)
[ERROR] at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:890)
[ERROR] at com.google.errorprone.scanner.ErrorProneScanner.visitMethodInvocation(ErrorProneScanner.java:180)
[ERROR] at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1876)
[ERROR] at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
[ERROR] at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
[ERROR] at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
...
Expected:
Some compiler warning or error ;)
Given:
When compiling with:
Then unfortunately:
Expected:
Some compiler warning or error ;)