FIR: use transformer creator from existing return type calculator when creating a new one

This commit is contained in:
Ilya Kirillov
2020-12-18 13:06:31 +01:00
parent 68f6e734be
commit 6ad396f417
@@ -73,6 +73,7 @@ fun <F : FirClass<F>> F.runContractAndBodiesResolutionForLocalClass(
components.scopeSession, components.scopeSession,
implicitBodyResolveComputationSession, implicitBodyResolveComputationSession,
designationMap, designationMap,
createTransformer = components.returnTypeCalculator.getTransformerCreator()
) )
val newContext = components.context.createSnapshotForLocalClasses(returnTypeCalculator, targetedClasses) val newContext = components.context.createSnapshotForLocalClasses(returnTypeCalculator, targetedClasses)
@@ -98,6 +99,11 @@ fun <F : FirClass<F>> F.runContractAndBodiesResolutionForLocalClass(
} }
} }
private fun ReturnTypeCalculator.getTransformerCreator() = when (this) {
is ReturnTypeCalculatorWithJump -> createTransformer
else -> ::FirDesignatedBodyResolveTransformerForReturnTypeCalculator
}
fun createReturnTypeCalculatorForIDE( fun createReturnTypeCalculatorForIDE(
session: FirSession, session: FirSession,
scopeSession: ScopeSession, scopeSession: ScopeSession,
@@ -178,7 +184,7 @@ private class ReturnTypeCalculatorWithJump(
private val scopeSession: ScopeSession, private val scopeSession: ScopeSession,
val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession, val implicitBodyResolveComputationSession: ImplicitBodyResolveComputationSession,
val designationMapForLocalClasses: Map<FirCallableMemberDeclaration<*>, List<FirClass<*>>> = mapOf(), val designationMapForLocalClasses: Map<FirCallableMemberDeclaration<*>, List<FirClass<*>>> = mapOf(),
private val createTransformer: ( val createTransformer: (
designation: Iterator<FirElement>, designation: Iterator<FirElement>,
session: FirSession, session: FirSession,
scopeSession: ScopeSession, scopeSession: ScopeSession,