[FIR] rename ensureResolve -> lazyResolveToPhase as it better describes function semantics

This commit is contained in:
Ilya Kirillov
2022-08-09 14:13:04 +02:00
parent e7e9c24473
commit 0748f28efe
64 changed files with 210 additions and 221 deletions
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isInline
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.substitution.createTypeSubstitutorByTypeConstructor
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.name.Name
@@ -32,7 +32,7 @@ internal fun ConeKotlinType.unsubstitutedUnderlyingTypeForInlineClass(session: F
?.lookupTag
?.toSymbol(session) as? FirRegularClassSymbol
?: return null
symbol.ensureResolved(FirResolvePhase.STATUS)
symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
return symbol.fir.inlineClassRepresentation?.underlyingType
}
@@ -63,9 +63,9 @@ private fun ConeSimpleKotlinType.valueClassRepresentationTypeMarkersList(session
val symbol = this.toSymbol(session) as? FirRegularClassSymbol ?: return null
if (!symbol.fir.isInline) return null
symbol.fir.valueClassRepresentation?.let { return it.underlyingPropertyNamesToTypes }
symbol.ensureResolved(FirResolvePhase.TYPES)
symbol.lazyResolveToPhase(FirResolvePhase.TYPES)
val constructorSymbol = symbol.fir.primaryConstructorIfAny(session) ?: return null
return constructorSymbol.valueParameterSymbols
.onEach { it.ensureResolved(FirResolvePhase.TYPES) }
.onEach { it.lazyResolveToPhase(FirResolvePhase.TYPES) }
.map { it.name to it.resolvedReturnType as ConeSimpleKotlinType }
}
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.FirUnstableSmartcastTypeScope
import org.jetbrains.kotlin.fir.scopes.impl.*
import org.jetbrains.kotlin.fir.scopes.scopeForClass
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
@@ -61,7 +61,7 @@ private fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: Scope
val fullyExpandedType = fullyExpandedType(useSiteSession)
val fir = fullyExpandedType.lookupTag.toSymbol(useSiteSession)?.fir as? FirClass ?: return null
fir.symbol.ensureResolved(requiredPhase)
fir.symbol.lazyResolveToPhase(requiredPhase)
val substitution = createSubstitution(fir.typeParameters, fullyExpandedType, useSiteSession)
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.types.model.CaptureStatus
@@ -34,13 +34,13 @@ abstract class SupertypeSupplier {
override fun forClass(firClass: FirClass, useSiteSession: FirSession): List<ConeClassLikeType> {
if (!firClass.isLocal) {
// for local classes the phase may not be updated till that moment
firClass.ensureResolved(FirResolvePhase.SUPER_TYPES)
firClass.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
}
return firClass.superConeTypes
}
override fun expansionForTypeAlias(typeAlias: FirTypeAlias, useSiteSession: FirSession): ConeClassLikeType? {
typeAlias.ensureResolved(FirResolvePhase.SUPER_TYPES)
typeAlias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
return typeAlias.expandedConeType
}
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.util.component2
fun ConeClassLikeType.fullyExpandedType(
useSiteSession: FirSession,
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
alias.ensureResolved(FirResolvePhase.SUPER_TYPES)
alias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
alias.expandedConeType
},
): ConeClassLikeType {
@@ -69,7 +69,7 @@ private fun ConeClassLikeType.fullyExpandedTypeNoCache(
fun ConeClassLikeType.directExpansionType(
useSiteSession: FirSession,
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
alias.ensureResolved(FirResolvePhase.SUPER_TYPES)
alias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
alias.expandedConeType
},
): ConeClassLikeType? {
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -21,8 +21,8 @@ fun ConeKotlinType.ensureResolvedTypeDeclaration(
) {
if (this !is ConeClassLikeType) return
lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase)
fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase)
lookupTag.toSymbol(useSiteSession)?.lazyResolveToPhase(requiredPhase)
fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.lazyResolveToPhase(requiredPhase)
}
fun FirTypeRef.ensureResolvedTypeDeclaration(
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.scopes.FakeOverrideSubstitution
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.name.Name
@@ -279,7 +279,7 @@ class FirClassSubstitutionScope(
)
private fun createSubstitutedData(member: FirCallableDeclaration, symbolForOverride: FirBasedSymbol<*>): SubstitutedData {
member.ensureResolved(FirResolvePhase.TYPES)
member.lazyResolveToPhase(FirResolvePhase.TYPES)
val (newTypeParameters, substitutor) = FirFakeOverrideGenerator.createNewTypeParametersAndSubstitutor(
session,
member as FirTypeParameterRefsOwner,
@@ -293,7 +293,7 @@ class FirClassSubstitutionScope(
val newDispatchReceiverType = dispatchReceiverTypeForSubstitutedMembers.substitute(substitutor)
member.ensureResolved(FirResolvePhase.STATUS)
member.lazyResolveToPhase(FirResolvePhase.STATUS)
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, member.symbol) }
val newReturnType = returnType?.substitute(substitutor)
@@ -312,7 +312,7 @@ class FirClassSubstitutionScope(
val member = original.fir
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
member.symbol.ensureResolved(FirResolvePhase.STATUS)
member.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
// TODO: do we have fields with implicit type?
val newReturnType = returnType?.substitute() ?: return original
@@ -325,7 +325,7 @@ class FirClassSubstitutionScope(
val member = original.fir as FirSyntheticProperty
if (skipPrivateMembers && member.visibility == Visibilities.Private) return original
member.symbol.ensureResolved(FirResolvePhase.STATUS)
member.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, original) }
val newReturnType = returnType?.substitute()
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.resolve.scope
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.scopes.*
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
@@ -49,7 +49,7 @@ class FirDelegatedMemberScope(
}
private fun buildScope(delegateField: FirField): FirTypeScope? {
delegateField.ensureResolved(FirResolvePhase.TYPES)
delegateField.lazyResolveToPhase(FirResolvePhase.TYPES)
return delegateField.returnTypeRef.coneType.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.visibility
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedTypeDeclaration
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.types.AbstractTypeChecker
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
@@ -102,8 +102,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
overrideCandidate: FirCallableDeclaration,
baseDeclaration: FirCallableDeclaration
): ConeSubstitutor? {
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
val substitutor = buildSubstitutorForOverridesCheck(overrideCandidate, baseDeclaration, session) ?: return null
if (
overrideCandidate.typeParameters.isNotEmpty() &&
@@ -128,8 +128,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
if (!isEqualReceiverTypes(overrideCandidate.receiverTypeRef, baseDeclaration.receiverTypeRef, substitutor)) return false
return overrideCandidate.valueParameters.zip(baseDeclaration.valueParameters).all { (memberParam, selfParam) ->
@@ -145,8 +145,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
if (overrideCandidate !is FirProperty) return false
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
return isEqualReceiverTypes(overrideCandidate.receiverTypeRef, baseDeclaration.receiverTypeRef, substitutor)
}
}
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
import org.jetbrains.kotlin.fir.symbols.ensureResolved
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.*
import org.jetbrains.kotlin.types.TypeCheckerState
@@ -286,7 +286,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
is ConeTypeVariableTypeConstructor -> emptyList()
is ConeTypeParameterLookupTag -> symbol.resolvedBounds.map { it.coneType }
is ConeClassLikeLookupTag -> {
when (val symbol = toClassLikeSymbol().also { it?.ensureResolved(FirResolvePhase.TYPES) }) {
when (val symbol = toClassLikeSymbol().also { it?.lazyResolveToPhase(FirResolvePhase.TYPES) }) {
is FirClassSymbol<*> -> symbol.fir.superConeTypes
is FirTypeAliasSymbol -> listOfNotNull(symbol.fir.expandedConeType)
else -> listOf(session.builtinTypes.anyType.type)