google / error-prone

Catch common Java mistakes as compile-time errors
https://errorprone.info
Apache License 2.0
6.77k stars 733 forks source link

Exception during static analysis with errorprone #2808

Open xzel23 opened 2 years ago

xzel23 commented 2 years ago

The exception is thrown when analysing code comparing java.util.logging.Level using the equality operator.

/Users/axel/Development/IdeaProjects/Library/utility/utility-swing/src/test/java/com/dua3/utility/swing/TestSwingComponents.java:126: error: An unhandled exception was thrown by the Error Prone static analysis plugin.
                    if (level==Level.SEVERE) {
                             ^
     Please report this at https://github.com/google/error-prone/issues/new and include the following:

error-prone version: 2.10.0
     BugPattern: ReferenceEquality
     Stack Trace:
     com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return value of "com.sun.source.tree.CaseTree.getStatements()" is null
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2051)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3962)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3985)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4946)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4952)
    at com.google.errorprone.dataflow.DataFlow.methodDataflow(DataFlow.java:176)
    at com.google.errorprone.dataflow.DataFlow.expressionDataflow(DataFlow.java:236)
    at com.google.errorprone.dataflow.nullnesspropagation.NullnessAnalysis.getNullness(NullnessAnalysis.java:59)
    at com.google.errorprone.bugpatterns.AbstractReferenceEquality.getNullness(AbstractReferenceEquality.java:182)
    at com.google.errorprone.bugpatterns.AbstractReferenceEquality.addFixes(AbstractReferenceEquality.java:103)
    at com.google.errorprone.bugpatterns.AbstractReferenceEquality.matchBinary(AbstractReferenceEquality.java:78)
    at com.google.errorprone.scanner.ErrorProneScanner.processMatchers(ErrorProneScanner.java:449)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBinary(ErrorProneScanner.java:512)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBinary(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:2166)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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.visitParenthesized(TreeScanner.java:661)
    at com.google.errorprone.scanner.ErrorProneScanner.visitParenthesized(ErrorProneScanner.java:799)
    at com.google.errorprone.scanner.ErrorProneScanner.visitParenthesized(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCParens.accept(JCTree.java:2022)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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.visitIf(TreeScanner.java:485)
    at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:654)
    at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1565)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitIf(TreeScanner.java:486)
    at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:654)
    at com.google.errorprone.scanner.ErrorProneScanner.visitIf(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1565)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitWhileLoop(TreeScanner.java:303)
    at com.google.errorprone.scanner.ErrorProneScanner.visitWhileLoop(ErrorProneScanner.java:893)
    at com.google.errorprone.scanner.ErrorProneScanner.visitWhileLoop(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCWhileLoop.accept(JCTree.java:1163)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitLambdaExpression(TreeScanner.java:646)
    at com.google.errorprone.scanner.ErrorProneScanner.visitLambdaExpression(ErrorProneScanner.java:702)
    at com.google.errorprone.scanner.ErrorProneScanner.visitLambdaExpression(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCLambda.accept(JCTree.java:1978)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitNewClass(TreeScanner.java:608)
    at com.google.errorprone.scanner.ErrorProneScanner.visitNewClass(ErrorProneScanner.java:774)
    at com.google.errorprone.scanner.ErrorProneScanner.visitNewClass(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCNewClass.accept(JCTree.java:1874)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitVariable(TreeScanner.java:243)
    at com.google.errorprone.scanner.ErrorProneScanner.visitVariable(ErrorProneScanner.java:885)
    at com.google.errorprone.scanner.ErrorProneScanner.visitVariable(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCVariableDecl.accept(JCTree.java:1045)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitBlock(TreeScanner.java:272)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:520)
    at com.google.errorprone.scanner.ErrorProneScanner.visitBlock(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitMethod(TreeScanner.java:224)
    at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:740)
    at com.google.errorprone.scanner.ErrorProneScanner.visitMethod(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:953)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:96)
    at jdk.compiler/com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitClass(TreeScanner.java:203)
    at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:548)
    at com.google.errorprone.scanner.ErrorProneScanner.visitClass(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:860)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    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:111)
    at jdk.compiler/com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
    at jdk.compiler/com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:152)
    at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:560)
    at com.google.errorprone.scanner.ErrorProneScanner.visitCompilationUnit(ErrorProneScanner.java:150)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:614)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:60)
    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:152)
    at jdk.compiler/com.sun.tools.javac.api.MultiTaskListener.finished(MultiTaskListener.java:132)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1394)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1341)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:933)
    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.gradle.internal.compiler.java.IncrementalCompileTask.call(IncrementalCompileTask.java:89)
    at org.gradle.api.internal.tasks.compile.AnnotationProcessingCompileTask.call(AnnotationProcessingCompileTask.java:94)
    at org.gradle.api.internal.tasks.compile.ResourceCleaningCompilationTask.call(ResourceCleaningCompilationTask.java:57)
    at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:54)
    at org.gradle.api.internal.tasks.compile.JdkJavaCompiler.execute(JdkJavaCompiler.java:39)
    at org.gradle.api.internal.tasks.compile.daemon.AbstractDaemonCompiler$CompilerWorkAction.execute(AbstractDaemonCompiler.java:135)
    at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
    at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:49)
    at org.gradle.workers.internal.AbstractClassLoaderWorker$1.create(AbstractClassLoaderWorker.java:43)
    at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
    at org.gradle.workers.internal.AbstractClassLoaderWorker.executeInClassLoader(AbstractClassLoaderWorker.java:43)
    at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:32)
    at org.gradle.workers.internal.FlatClassLoaderWorker.run(FlatClassLoaderWorker.java:22)
    at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:85)
    at org.gradle.workers.internal.WorkerDaemonServer.run(WorkerDaemonServer.java:55)
    at org.gradle.process.internal.worker.request.WorkerAction$1.call(WorkerAction.java:138)
    at org.gradle.process.internal.worker.child.WorkerLogEventListener.withWorkerLoggingProtocol(WorkerLogEventListener.java:41)
    at org.gradle.process.internal.worker.request.WorkerAction.run(WorkerAction.java:135)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
    at java.base/java.lang.Thread.run(Thread.java:833)
  Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return value of "com.sun.source.tree.CaseTree.getStatements()" is null
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne$SwitchBuilder.buildCase(CFGTranslationPhaseOne.java:2190)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne$SwitchBuilder.build(CFGTranslationPhaseOne.java:2156)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitSwitch(CFGTranslationPhaseOne.java:2086)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitSwitch(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCSwitch.accept(JCTree.java:1304)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:2062)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitIf(CFGTranslationPhaseOne.java:2748)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitIf(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCIf.accept(JCTree.java:1565)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:2062)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitWhileLoop(CFGTranslationPhaseOne.java:3594)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitWhileLoop(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCWhileLoop.accept(JCTree.java:1163)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:2062)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitBlock(CFGTranslationPhaseOne.java:198)
    at jdk.compiler/com.sun.tools.javac.tree.JCTree$JCBlock.accept(JCTree.java:1103)
    at jdk.compiler/com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:60)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.process(CFGTranslationPhaseOne.java:428)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.process(CFGTranslationPhaseOne.java:467)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGBuilder.build(CFGBuilder.java:70)
    at com.google.errorprone.dataflow.DataFlow$2.load(DataFlow.java:127)
    at com.google.errorprone.dataflow.DataFlow$2.load(DataFlow.java:95)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
    ... 177 more
cushon commented 2 years ago
  Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because the return value of "com.sun.source.tree.CaseTree.getStatements()" is null
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne$SwitchBuilder.buildCase(CFGTranslationPhaseOne.java:2190)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne$SwitchBuilder.build(CFGTranslationPhaseOne.java:2156)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitSwitch(CFGTranslationPhaseOne.java:2086)
    at org.checkerframework.errorprone.dataflow.cfg.builder.CFGTranslationPhaseOne.visitSwitch(CFGTranslationPhaseOne.java:198)

This looks like it was fixed by:

https://github.com/typetools/checker-framework/commit/17dbf44f0b76ff3e7428647d8321ff22e11ffa35#diff-4d628494d4b6ab7954b6af427185f072ad43b36154808fc9ed450ee77ec66a68L2193-R2238

msridhar commented 2 years ago

FWIW, we bumped NullAway to Checker Framework 3.21.1 to add support for switch expressions, and in our testing it's working fine.