[FIR] Use proper ReturnTypeCalculator inside FakeOverrideTypeCalculator

This commit is contained in:
Dmitriy Novozhilov
2022-04-05 19:22:30 +04:00
committed by teamcity
parent 6e2402620f
commit b79f5a445f
4 changed files with 25 additions and 2 deletions
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.FirTransformerBasedResolveP
import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
import org.jetbrains.kotlin.fir.resolve.transformers.TransformImplicitType
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.runContractResolveForLocalClass
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
import org.jetbrains.kotlin.fir.scopes.fakeOverrideSubstitution
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
@@ -205,6 +206,7 @@ private class ReturnTypeCalculatorWithJump(
outerBodyResolveContext: BodyResolveContext?
) -> FirDesignatedBodyResolveTransformerForReturnTypeCalculator = ::FirDesignatedBodyResolveTransformerForReturnTypeCalculator,
) : ReturnTypeCalculator() {
override val fakeOverrideTypeCalculator: FakeOverrideTypeCalculator = FakeOverrideTypeCalculatorWithJump()
@OptIn(PrivateForInline::class)
var outerBodyResolveContext: BodyResolveContext? = null
@@ -307,6 +309,12 @@ private class ReturnTypeCalculatorWithJump(
}
return newReturnTypeRef
}
private inner class FakeOverrideTypeCalculatorWithJump : FakeOverrideTypeCalculator.AbstractFakeOverrideTypeCalculator() {
override fun FirCallableDeclaration.getResolvedTypeRef(): FirResolvedTypeRef? {
return this@ReturnTypeCalculatorWithJump.computeReturnTypeRef(this)
}
}
}
open class FirDesignatedBodyResolveTransformerForReturnTypeCalculator(