FIR: use transformer creator from existing return type calculator when creating a new one
This commit is contained in:
+7
-1
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user