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)

Most upvoted comments

@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:

import arrow.core.Either
import arrow.core.continuations.either
import java.util.UUID

class TestDetekt {

    private suspend fun f1() {
        either {
            f2().bind()
                .also {
                    UUID.randomUUID()
                }
        }
    }

    suspend fun f2(): Either<ErrorAbc, Unit> =
        either {}
}

sealed class ErrorAbc

I’ve tried adding this test to IgnoredReturnValueSpec since the original stacktrace showed the problem in IgnoredReturnValue:

        @Test
        fun `replicate 6283`() {
            val code = """
                class TestDetekt {
                
                private suspend fun f1(): Unit {
                    customDsl {
                        f2().bind()
                            .also {
                                UUID.randomUUID()
                            }
                    }
                    Unit
                }
                
                fun f2(): CustomType<CustomError, Unit> =
                    customDsl {}
                }
            """.trimIndent()
            val findings = subject.compileAndLintWithContext(env, code)
            assertThat(findings).isEmpty()
        }

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?