Skip to content

GetClassOnAnnotation: An unhandled exception was thrown #5743

@slinstaedt

Description

@slinstaedt

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 ;)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions