detekt: Access to psi files should not be performed after project disposal - Detekt 1.23.0
Detekt 1.23.0 throws NullPointerException. It worked fine with 1.22.0. Kotlin 1.8.21 Gradle 7.5
Unfortunately I’m unable to provide exactly steps to reproduce but it occurs with code like this:
import arrow.core.Either
class TestDetekt(
private val dep1: Dep1,
private val dep2: Dep2,
private val dep3: Dep3,
) {
private suspend fun funabc(par1: ABC): Either<CustomError, Unit> =
customDsl {
dep1.funccc(par1).bind()
.also {
dep2.funbbb(it.id.value, it.abc.aaa).bind()
}
Unit
}.aaa(dep3)
}
This NPE occurs for many classes in our projects. In one case it was ocurring on log.info("msg")
but changing it to log.info { "msg" }
was fixing the issue.
In general 1.23.0 is broken in so many places that we needed to return to 1.22.0 in many projects 😦 I tried with the newest snapshot but looks like there are some breaking changes.
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl.processPackageDirectories(PsiElementFinderImpl.java:161)
at org.jetbrains.kotlin.com.intellij.psi.impl.JavaPsiFacadeImpl.processPackageDirectories(JavaPsiFacadeImpl.java:318)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.lambda$createCachedDirectories$2(PsiPackageImpl.java:80)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAllDirectories(PsiPackageImpl.java:66)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:64)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:59)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl$PackageAnnotationValueProvider.compute(PsiPackageImpl.java:398)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAnnotationList(PsiPackageImpl.java:156)
at org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl.getAnnotations(JavaPackageImpl.kt:47)
at org.jetbrains.kotlin.load.java.lazy.LazyJavaAnnotations.iterator(LazyJavaAnnotations.kt:40)
at kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll(MutableCollections.kt:117)
at kotlin.collections.CollectionsKt___CollectionsKt.plus(_Collections.kt:3251)
at io.gitlab.arturbosch.detekt.rules.bugs.IgnoredReturnValue.visitCallExpression(IgnoredReturnValue.kt:118)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:811)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:104)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitBlockExpression(KtVisitor.java:318)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:305)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:865)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:79)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:86)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDeclaration(KtVisitor.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:461)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedDeclaration(KtVisitor.java:406)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:385)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:973)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedFunction(KtVisitor.java:53)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:49)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:491)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtNamedFunction.accept(KtNamedFunction.java:51)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:185)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:754)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtFile(KtVisitor.java:73)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:69)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:521)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:250)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:237)
at io.gitlab.arturbosch.detekt.api.BaseRule.visit(BaseRule.kt:56)
at io.gitlab.arturbosch.detekt.api.BaseRule.visitFile(BaseRule.kt:46)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze$executeRules(Analyzer.kt:130)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze(Analyzer.kt:142)
at io.gitlab.arturbosch.detekt.core.Analyzer.access$analyze(Analyzer.kt:32)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:89)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:87)
at io.gitlab.arturbosch.detekt.core.TaskPoolKt.task$lambda$0(TaskPool.kt:12)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
ERROR: Access to psi files should not be performed after project disposal: org.jetbrains.kotlin.com.intellij.mock.MockProject@2fde82f9
java.lang.Throwable: Access to psi files should not be performed after project disposal: org.jetbrains.kotlin.com.intellij.mock.MockProject@2fde82f9
at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.Logger.error(Logger.java:165)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.impl.FileManagerImpl.findDirectory(FileManagerImpl.java:395)
Access to psi files should not be performed after project disposal: org.jetbrains.kotlin.com.intellij.mock.MockProject@2fde82f9
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiManagerImpl.findDirectory(PsiManagerImpl.java:167)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl$1.processInReadAction(PsiElementFinderImpl.java:165)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl$1.processInReadAction(PsiElementFinderImpl.java:161)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadActionProcessor.lambda$process$0(ReadActionProcessor.java:25)
at org.jetbrains.kotlin.com.intellij.mock.MockApplication.runReadAction(MockApplication.java:188)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadAction.compute(ReadAction.java:61)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadActionProcessor.process(ReadActionProcessor.java:25)
at org.jetbrains.kotlin.com.intellij.util.containers.ContainerUtil.process(ContainerUtil.java:900)
at org.jetbrains.kotlin.com.intellij.util.CollectionQuery.forEach(CollectionQuery.java:32)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl.processPackageDirectories(PsiElementFinderImpl.java:161)
at org.jetbrains.kotlin.com.intellij.psi.impl.JavaPsiFacadeImpl.processPackageDirectories(JavaPsiFacadeImpl.java:318)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.lambda$createCachedDirectories$2(PsiPackageImpl.java:80)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAllDirectories(PsiPackageImpl.java:66)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:64)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:59)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl$PackageAnnotationValueProvider.compute(PsiPackageImpl.java:398)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAnnotationList(PsiPackageImpl.java:156)
at org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl.getAnnotations(JavaPackageImpl.kt:47)
at org.jetbrains.kotlin.load.java.lazy.LazyJavaAnnotations.iterator(LazyJavaAnnotations.kt:40)
at kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll(MutableCollections.kt:117)
at kotlin.collections.CollectionsKt___CollectionsKt.plus(_Collections.kt:3251)
at io.gitlab.arturbosch.detekt.rules.bugs.IgnoredReturnValue.visitCallExpression(IgnoredReturnValue.kt:118)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:811)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:104)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitBlockExpression(KtVisitor.java:318)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:305)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:865)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:79)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:86)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDeclaration(KtVisitor.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:461)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedDeclaration(KtVisitor.java:406)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:385)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:973)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedFunction(KtVisitor.java:53)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:49)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:491)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtNamedFunction.accept(KtNamedFunction.java:51)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:185)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:754)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtFile(KtVisitor.java:73)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:69)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:521)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:250)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:237)
at io.gitlab.arturbosch.detekt.api.BaseRule.visit(BaseRule.kt:56)
at io.gitlab.arturbosch.detekt.api.BaseRule.visitFile(BaseRule.kt:46)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze$executeRules(Analyzer.kt:130)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze(Analyzer.kt:142)
at io.gitlab.arturbosch.detekt.core.Analyzer.access$analyze(Analyzer.kt:32)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:89)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:87)
at io.gitlab.arturbosch.detekt.core.TaskPoolKt.task$lambda$0(TaskPool.kt:12)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
ERROR: Access to psi files should not be performed after project disposal: org.jetbrains.kotlin.com.intellij.mock.MockProject@2fde82f9
java.lang.Throwable: Access to psi files should not be performed after project disposal: org.jetbrains.kotlin.com.intellij.mock.MockProject@2fde82f9
at org.jetbrains.kotlin.com.intellij.openapi.diagnostic.Logger.error(Logger.java:165)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.impl.FileManagerImpl.findDirectory(FileManagerImpl.java:395)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiManagerImpl.findDirectory(PsiManagerImpl.java:167)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl$1.processInReadAction(PsiElementFinderImpl.java:165)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl$1.processInReadAction(PsiElementFinderImpl.java:161)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadActionProcessor.lambda$process$0(ReadActionProcessor.java:25)
at org.jetbrains.kotlin.com.intellij.mock.MockApplication.runReadAction(MockApplication.java:188)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadAction.compute(ReadAction.java:61)
at org.jetbrains.kotlin.com.intellij.openapi.application.ReadActionProcessor.process(ReadActionProcessor.java:25)
at org.jetbrains.kotlin.com.intellij.util.containers.ContainerUtil.process(ContainerUtil.java:900)
at org.jetbrains.kotlin.com.intellij.util.CollectionQuery.forEach(CollectionQuery.java:32)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementFinderImpl.processPackageDirectories(PsiElementFinderImpl.java:161)
at org.jetbrains.kotlin.com.intellij.psi.impl.JavaPsiFacadeImpl.processPackageDirectories(JavaPsiFacadeImpl.java:318)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.lambda$createCachedDirectories$2(PsiPackageImpl.java:80)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAllDirectories(PsiPackageImpl.java:66)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:64)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageBase.getDirectories(PsiPackageBase.java:59)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl$PackageAnnotationValueProvider.compute(PsiPackageImpl.java:398)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42)
at org.jetbrains.kotlin.com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
at org.jetbrains.kotlin.com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43)
at org.jetbrains.kotlin.com.intellij.psi.impl.file.PsiPackageImpl.getAnnotationList(PsiPackageImpl.java:156)
at org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl.getAnnotations(JavaPackageImpl.kt:47)
at org.jetbrains.kotlin.load.java.lazy.LazyJavaAnnotations.iterator(LazyJavaAnnotations.kt:40)
at kotlin.collections.CollectionsKt__MutableCollectionsKt.addAll(MutableCollections.kt:117)
at kotlin.collections.CollectionsKt___CollectionsKt.plus(_Collections.kt:3251)
at io.gitlab.arturbosch.detekt.rules.bugs.IgnoredReturnValue.visitCallExpression(IgnoredReturnValue.kt:118)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:811)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitQualifiedExpression(KtVisitor.java:290)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:277)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:823)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDotQualifiedExpression(KtVisitor.java:306)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:293)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:847)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDotQualifiedExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtDotQualifiedExpression.accept(KtDotQualifiedExpression.kt:32)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:104)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitBlockExpression(KtVisitor.java:318)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:305)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:865)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitBlockExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:79)
at org.jetbrains.kotlin.psi.KtBlockExpression.accept(KtBlockExpression.java:86)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtExpressionImpl.accept(KtExpressionImpl.kt:14)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LazyParseablePsiElement.acceptChildren(LazyParseablePsiElement.java:104)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitLambdaExpression(KtVisitor.java:274)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitLambdaExpression(KtVisitorVoid.java:261)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitLambdaExpression(KtVisitorVoid.java:799)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitLambdaExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtLambdaExpression.accept(KtLambdaExpression.java:40)
at org.jetbrains.kotlin.psi.KtLambdaExpression.accept(KtLambdaExpression.java:92)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitArgument(KtVisitor.java:182)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitArgument(KtVisitorVoid.java:169)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitArgument(KtVisitorVoid.java:661)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitArgument(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtValueArgument.accept(KtValueArgument.java:46)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitReferenceExpression(KtVisitor.java:202)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitReferenceExpression(KtVisitorVoid.java:189)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitReferenceExpression(KtVisitorVoid.java:691)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitReferenceExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitCallExpression(KtVisitor.java:282)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:269)
at io.gitlab.arturbosch.detekt.rules.bugs.IgnoredReturnValue.visitCallExpression(IgnoredReturnValue.kt:109)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:811)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitCallExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtCallExpression.accept(KtCallExpression.java:35)
at org.jetbrains.kotlin.psi.KtElementImpl.accept(KtElementImpl.java:51)
at org.jetbrains.kotlin.com.intellij.psi.impl.PsiElementBase.acceptChildren(PsiElementBase.java:69)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtElement(KtVisitor.java:24)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:25)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:455)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtElement(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitExpression(KtVisitor.java:186)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:173)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:667)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitExpression(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitDeclaration(KtVisitor.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:29)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:461)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedDeclaration(KtVisitor.java:406)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:385)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:973)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedDeclaration(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtVisitor.visitNamedFunction(KtVisitor.java:53)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:49)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:491)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitNamedFunction(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtNamedFunction.accept(KtNamedFunction.java:51)
at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.SharedImplUtil.acceptChildren(SharedImplUtil.java:185)
at org.jetbrains.kotlin.com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:754)
at org.jetbrains.kotlin.psi.KtTreeVisitorVoid.visitElement(KtTreeVisitorVoid.java:25)
at org.jetbrains.kotlin.com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35)
at org.jetbrains.kotlin.psi.KtVisitor.visitKtFile(KtVisitor.java:73)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:69)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:521)
at org.jetbrains.kotlin.psi.KtVisitorVoid.visitKtFile(KtVisitorVoid.java:21)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:250)
at org.jetbrains.kotlin.psi.KtFile.accept(KtFile.kt:237)
at io.gitlab.arturbosch.detekt.api.BaseRule.visit(BaseRule.kt:56)
at io.gitlab.arturbosch.detekt.api.BaseRule.visitFile(BaseRule.kt:46)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze$executeRules(Analyzer.kt:130)
at io.gitlab.arturbosch.detekt.core.Analyzer.analyze(Analyzer.kt:142)
at io.gitlab.arturbosch.detekt.core.Analyzer.access$analyze(Analyzer.kt:32)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:89)
at io.gitlab.arturbosch.detekt.core.Analyzer$runAsync$tasks$1$1.invoke(Analyzer.kt:87)
at io.gitlab.arturbosch.detekt.core.TaskPoolKt.task$lambda$0(TaskPool.kt:12)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Execution failed for task ':detektMain'.
> java.lang.IllegalStateException: Analyzing ABCclass.kt led to an exception.
Location: java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
The original exception message was: java.lang.NullPointerException
Running detekt '1.23.0' on Java '11.0.15+10-jvmci-22.1-b06' on OS 'Linux'
If the exception message does not help, please feel free to create an issue on our GitHub page.
About this issue
- Original URL
- State: open
- Created a year ago
- Reactions: 1
- Comments: 18 (8 by maintainers)
@BraisGabin thanks. Issue doesn’t occur with Gradle 8.2.1.
If I create a Unit test with that code the test passes… Is it possible for you to update the gradle to the last version (8.2.1) and test it? That seems to fix the issue on the provided failing project on #6175.
Working example:
I’ve tried adding this test to
IgnoredReturnValueSpec
since the original stacktrace showed the problem inIgnoredReturnValue
:But it didn’t trigger the issue. Can you please try a snapshot of detekt and see if it’s fixed, or provide a complete failing test?