[FIR-IDE] Add lock for status resolve
This commit is contained in:
+7
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user