From 3068d79d2b5aa207d5eeb57fea8007a9b17e24c0 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 20 Oct 2020 16:12:09 +0300 Subject: [PATCH] [FIR-IDE] Add lock for status resolve --- .../kotlin/idea/fir/low/level/api/FirPhaseRunner.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirPhaseRunner.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirPhaseRunner.kt index 5e824fc4807..1f5584d74b8 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirPhaseRunner.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/FirPhaseRunner.kt @@ -14,12 +14,16 @@ import kotlin.concurrent.withLock internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) { private val superTypesBodyResolveLock = ReentrantLock() + private val statusResolveLock = ReentrantLock() private val implicitTypesResolveLock = ReentrantLock() fun runPhase(firFile: FirFile, phase: FirResolvePhase) = when (phase) { FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock { runPhaseWithoutLock(firFile, phase) } + FirResolvePhase.STATUS -> statusResolveLock.withLock { + runPhaseWithoutLock(firFile, phase) + } FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock { runPhaseWithoutLock(firFile, phase) } @@ -32,6 +36,9 @@ internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) { FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock { runPhaseWithCustomResolveWithoutLock(resolve) } + FirResolvePhase.STATUS -> statusResolveLock.withLock { + runPhaseWithCustomResolveWithoutLock(resolve) + } FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock { runPhaseWithCustomResolveWithoutLock(resolve) } @@ -54,4 +61,4 @@ internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) { phaseProcessor.processFile(firFile) } } -} \ No newline at end of file +}