[FIR] Do not dereference delegate in lazy mode

Tenth step for ^KT-52615
This commit is contained in:
Egor Kulikov
2023-02-24 14:13:05 +01:00
committed by teamcity
parent 7ce2f64c18
commit 163017fcaf
9 changed files with 42 additions and 26 deletions
@@ -150,14 +150,7 @@ internal object FirLazyBodiesCalculator {
val newDelegate = newProperty.delegate as? FirWrappedDelegateExpression
check(newDelegate != null) { "Invalid replacement delegate" }
delegate.replaceExpression(newDelegate.expression)
val delegateProviderCall = delegate.delegateProvider as? FirFunctionCall
val delegateProviderExplicitReceiver = delegateProviderCall?.explicitReceiver
if (delegateProviderExplicitReceiver is FirLazyExpression) {
val newDelegateProviderExplicitReceiver = (newDelegate.delegateProvider as? FirFunctionCall)?.explicitReceiver
check(newDelegateProviderExplicitReceiver != null) { "Invalid replacement expression" }
delegateProviderCall.replaceExplicitReceiver(newDelegateProviderExplicitReceiver)
}
delegate.replaceDelegateProvider(newDelegate.delegateProvider)
}
}