From d03f523a71d50a741ac4faf8cb7e2cbcf9dc15bd Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 8 Feb 2023 15:57:42 +0100 Subject: [PATCH] [LL FIR] return non-cancellable section back for resolve until cache invalidation problems (^KTIJ-24594) are fixed ^KTIJ-24594 --- .../api/fir/transformers/LLFirLazyTransformerExecutor.kt | 5 ++++- .../kotlin/analysis/low/level/api/fir/util/utils.kt | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformerExecutor.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformerExecutor.kt index 1a110225131..5b08b35738b 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformerExecutor.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirLazyTransformerExecutor.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.transformers import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseRunner import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDesignationWithFile import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.LLFirLockProvider +import org.jetbrains.kotlin.analysis.low.level.api.fir.util.executeWithoutPCE import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirTowerDataContextCollector @@ -30,7 +31,9 @@ internal class LLFirLazyTransformerExecutor { lockProvider, towerDataContextCollector ) - lazyTransformer.transformDeclaration(phaseRunner) + executeWithoutPCE { + lazyTransformer.transformDeclaration(phaseRunner) + } } } } \ No newline at end of file diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/utils.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/utils.kt index a85e218db2d..282704ec361 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/utils.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/util/utils.kt @@ -18,6 +18,12 @@ import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral import java.util.concurrent.TimeUnit import java.util.concurrent.locks.Lock +internal inline fun executeWithoutPCE(crossinline action: () -> T): T { + var result: T? = null + ProgressManager.getInstance().executeNonCancelableSection { result = action() } + @Suppress("UNCHECKED_CAST") + return result as T +} internal inline fun Lock.lockWithPCECheck(lockingIntervalMs: Long, action: () -> T): T { while (true) {