-
Notifications
You must be signed in to change notification settings - Fork 786
NPE in NestedInstanceOfConditions #5685
Copy link
Copy link
Closed
Description
This code:
@Test
void test() {
final var foo = new Foo.Bar("");
final int x = 1;
if (foo instanceof Foo.Bar(final String a)) {
if (x instanceof short) {
IO.println(a);
}
}
}
public sealed interface Foo {
record Bar(String a) implements Foo {
}
}
Results in the following stack trace:
java: An unhandled exception was thrown by the Error Prone static analysis plugin.
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-prone version: 2.48.0
BugPattern: NestedInstanceOfConditions
Stack Trace:
java.lang.NullPointerException: Cannot invoke "com.sun.tools.javac.code.Type.isPrimitive()" because "t" is null
at jdk.compiler/com.sun.tools.javac.code.Types.eraseNotNeeded(Types.java:2426)
at jdk.compiler/com.sun.tools.javac.code.Types.erasure(Types.java:2419)
at com.google.errorprone.bugpatterns.NestedInstanceOfConditions$NestedInstanceOfMatcher.matches(NestedInstanceOfConditions.java:129)
at com.google.errorprone.matchers.Contains$FirstMatchingScanner.scan(Contains.java:58)
at com.google.errorprone.matchers.Contains$FirstMatchingScanner.scan(Contains.java:45)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:271)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1164)
at com.google.errorprone.matchers.Contains.matches(Contains.java:41)
at com.google.errorprone.bugpatterns.NestedInstanceOfConditions.matchIf(NestedInstanceOfConditions.java:71)
at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:541)
at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:797)
at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:180)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1644)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:95)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:271)
at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:623)
at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:180)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1164)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:95)
at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:223)
at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:884)
at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:180)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:999)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:95)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:118)
at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:202)
at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:651)
at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:180)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:906)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:92)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:74)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:48)
at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:110)
at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:118)
at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:151)
at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:663)
at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:180)
at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:634)
at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:66)
at com.google.errorprone.scanner.Scanner.scan(Scanner.java:58)
at com.google.errorprone.scanner.ErrorProneScannerTransformer.apply(ErrorProneScannerTransformer.java:43)
at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:231)
at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:133)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1437)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1384)
at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:969)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:310)
at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:80)
at org.jetbrains.jps.incremental.java.JavaBuilder.lambda$compileJava$2(JavaBuilder.java:588)
at org.jetbrains.jps.incremental.java.JavaBuilder.invokeJavac(JavaBuilder.java:650)
at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:586)
at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:428)
at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:353)
at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:307)
at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1563)
at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:661)
at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1745)
at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1368)
at org.jetbrains.jps.incremental.IncProjectBuilder$BuildParallelizer$1.run(IncProjectBuilder.java:1330)
at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:271)
at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:44)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.executeFirstTaskAndHelpQueue(BoundedTaskExecutor.java:249)
at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:265)
at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:234)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
at java.base/java.lang.Thread.run(Thread.java:1516)
Java version:
openjdk version "26" 2026-03-17
OpenJDK Runtime Environment Zulu26.28+59-CA (build 26+35)
OpenJDK 64-Bit Server VM Zulu26.28+59-CA (build 26+35, mixed mode, sharing)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels