[FIR] Get rid of ReturnTypeCalculator in ScopeSession

This commit is contained in:
Dmitriy Novozhilov
2020-10-14 17:10:50 +03:00
parent fae1b70605
commit 23f1cc6b07
3 changed files with 4 additions and 11 deletions
@@ -37,9 +37,7 @@ class FirImplicitTypeBodyResolveProcessor(
@AdapterForResolveProcessor @AdapterForResolveProcessor
class FirImplicitTypeBodyResolveTransformerAdapter(session: FirSession, scopeSession: ScopeSession) : FirTransformer<Nothing?>() { class FirImplicitTypeBodyResolveTransformerAdapter(session: FirSession, scopeSession: ScopeSession) : FirTransformer<Nothing?>() {
private val implicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession() private val implicitBodyResolveComputationSession = ImplicitBodyResolveComputationSession()
private val returnTypeCalculator = ReturnTypeCalculatorWithJump(session, scopeSession, implicitBodyResolveComputationSession).also { private val returnTypeCalculator = ReturnTypeCalculatorWithJump(session, scopeSession, implicitBodyResolveComputationSession)
scopeSession.returnTypeCalculator = it
}
private val transformer = FirImplicitAwareBodyResolveTransformer( private val transformer = FirImplicitAwareBodyResolveTransformer(
session, session,
@@ -119,9 +119,6 @@ class FirClassSubstitutionScope(
} }
} }
private val typeCalculator =
(scopeSession.returnTypeCalculator as ReturnTypeCalculator?) ?: ReturnTypeCalculatorForFullBodyResolve()
private fun ConeKotlinType.substitute(): ConeKotlinType? { private fun ConeKotlinType.substitute(): ConeKotlinType? {
return substitutor.substituteOrNull(this) return substitutor.substituteOrNull(this)
} }
@@ -227,7 +224,7 @@ class FirClassSubstitutionScope(
val receiverType = member.receiverTypeRef?.coneType val receiverType = member.receiverTypeRef?.coneType
val newReceiverType = receiverType?.substitute(substitutor) val newReceiverType = receiverType?.substitute(substitutor)
val returnType = typeCalculator.tryCalculateReturnType(member).type val returnType = member.returnTypeRef.coneType
val newReturnType = returnType.substitute(substitutor) val newReturnType = returnType.substitute(substitutor)
return SubstitutedData(newTypeParameters, newReceiverType, newReturnType, substitutor) return SubstitutedData(newTypeParameters, newReceiverType, newReturnType, substitutor)
} }
@@ -237,7 +234,7 @@ class FirClassSubstitutionScope(
val member = original.fir val member = original.fir
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
val returnType = typeCalculator.tryCalculateReturnType(member).type val returnType = member.returnTypeRef.coneType
val newReturnType = returnType.substitute() ?: return original val newReturnType = returnType.substitute() ?: return original
return createFakeOverrideField(session, member, original, newReturnType, derivedClassId) return createFakeOverrideField(session, member, original, newReturnType, derivedClassId)
@@ -248,7 +245,7 @@ class FirClassSubstitutionScope(
val member = original.fir as FirSyntheticProperty val member = original.fir as FirSyntheticProperty
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
val returnType = typeCalculator.tryCalculateReturnType(member).type val returnType = member.returnTypeRef.coneType
val newReturnType = returnType.substitute() val newReturnType = returnType.substitute()
val newParameterTypes = member.getter.valueParameters.map { val newParameterTypes = member.getter.valueParameters.map {
@@ -10,8 +10,6 @@ import org.jetbrains.kotlin.fir.PrivateForInline
class ScopeSession { class ScopeSession {
private val scopes = hashMapOf<Any, HashMap<ScopeSessionKey<*, *>, Any>>() private val scopes = hashMapOf<Any, HashMap<ScopeSessionKey<*, *>, Any>>()
var returnTypeCalculator: Any? = null
@PrivateForInline @PrivateForInline
fun scopes() = scopes fun scopes() = scopes