[FIR-IDE] Add lock for status resolve

This commit is contained in:
Dmitriy Novozhilov
2020-10-20 16:12:09 +03:00
parent 6550bd09b1
commit 3068d79d2b
@@ -14,12 +14,16 @@ import kotlin.concurrent.withLock
internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) { internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) {
private val superTypesBodyResolveLock = ReentrantLock() private val superTypesBodyResolveLock = ReentrantLock()
private val statusResolveLock = ReentrantLock()
private val implicitTypesResolveLock = ReentrantLock() private val implicitTypesResolveLock = ReentrantLock()
fun runPhase(firFile: FirFile, phase: FirResolvePhase) = when (phase) { fun runPhase(firFile: FirFile, phase: FirResolvePhase) = when (phase) {
FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock { FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock {
runPhaseWithoutLock(firFile, phase) runPhaseWithoutLock(firFile, phase)
} }
FirResolvePhase.STATUS -> statusResolveLock.withLock {
runPhaseWithoutLock(firFile, phase)
}
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock { FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock {
runPhaseWithoutLock(firFile, phase) runPhaseWithoutLock(firFile, phase)
} }
@@ -32,6 +36,9 @@ internal class FirPhaseRunner(val transformerProvider: FirTransformerProvider) {
FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock { FirResolvePhase.SUPER_TYPES -> superTypesBodyResolveLock.withLock {
runPhaseWithCustomResolveWithoutLock(resolve) runPhaseWithCustomResolveWithoutLock(resolve)
} }
FirResolvePhase.STATUS -> statusResolveLock.withLock {
runPhaseWithCustomResolveWithoutLock(resolve)
}
FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock { FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE -> implicitTypesResolveLock.withLock {
runPhaseWithCustomResolveWithoutLock(resolve) runPhaseWithCustomResolveWithoutLock(resolve)
} }