[FIR] rename ensureResolve -> lazyResolveToPhase as it better describes function semantics
This commit is contained in:
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
||||
import java.util.*
|
||||
|
||||
@@ -23,7 +23,7 @@ private var FirDeclaration.actualForExpectMap: WeakHashMap<FirSession, FirBasedS
|
||||
|
||||
val FirBasedSymbol<*>.expectForActual: ExpectForActualData?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||
lazyResolveToPhase(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||
return fir.expectForActual
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ fun FirDeclaration.getActualForExpect(useSiteSession: FirSession): FirBasedSymbo
|
||||
}
|
||||
|
||||
fun FirBasedSymbol<*>.getActualForExpect(session: FirSession): FirBasedSymbol<*>? {
|
||||
ensureResolved(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||
lazyResolveToPhase(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||
return fir.getActualForExpect(session)
|
||||
}
|
||||
|
||||
|
||||
@@ -44,19 +44,19 @@ abstract class FirBasedSymbol<E : FirDeclaration> {
|
||||
// NB: annotation argument mapping (w/ vararg) are built/replaced during call completion, hence BODY_RESOLVE.
|
||||
// TODO(KT-53371): optimize ARGUMENTS_OF_ANNOTATIONS to build annotation argument mapping too.
|
||||
// TODO(KT-53519): Even with BODY_RESOLVE, argument mapping for annotations on [FirValueParameter] is not properly built.
|
||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.annotations
|
||||
}
|
||||
|
||||
val resolvedAnnotationsWithClassIds: List<FirAnnotation>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
return fir.annotations
|
||||
}
|
||||
|
||||
val resolvedAnnotationClassIds: List<ClassId>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
return fir.annotations.mapNotNull { (it.annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.classId }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
|
||||
abstract class FirLazyDeclarationResolver : FirSessionComponent {
|
||||
abstract fun lazyResolveToPhase(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase)
|
||||
}
|
||||
|
||||
val FirSession.lazyDeclarationResolver: FirLazyDeclarationResolver by FirSession.sessionComponentAccessor()
|
||||
|
||||
fun FirBasedSymbol<*>.lazyResolveToPhase(toPhase: FirResolvePhase) {
|
||||
val session = fir.moduleData.session
|
||||
val phaseManager = session.lazyDeclarationResolver
|
||||
phaseManager.lazyResolveToPhase(this, toPhase)
|
||||
}
|
||||
|
||||
fun FirDeclaration.lazyResolveToPhase(toPhase: FirResolvePhase) {
|
||||
symbol.lazyResolveToPhase(toPhase)
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.symbols
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
|
||||
abstract class FirPhaseManager : FirSessionComponent {
|
||||
abstract fun ensureResolved(
|
||||
symbol: FirBasedSymbol<*>,
|
||||
requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||
)
|
||||
}
|
||||
|
||||
val FirSession.phaseManager: FirPhaseManager by FirSession.sessionComponentAccessor()
|
||||
|
||||
fun FirBasedSymbol<*>.ensureResolved(requiredPhase: FirResolvePhase) {
|
||||
val session = fir.moduleData.session
|
||||
val phaseManager = session.phaseManager
|
||||
phaseManager.ensureResolved(this, requiredPhase)
|
||||
}
|
||||
|
||||
fun FirDeclaration.ensureResolved(requiredPhase: FirResolvePhase) {
|
||||
symbol.ensureResolved(requiredPhase)
|
||||
}
|
||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
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.types.*
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -33,13 +33,13 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
||||
|
||||
val resolvedContextReceivers: List<FirContextReceiver>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
return fir.contextReceivers
|
||||
}
|
||||
|
||||
val resolvedStatus: FirResolvedDeclarationStatus
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
return fir.status as FirResolvedDeclarationStatus
|
||||
}
|
||||
|
||||
@@ -60,15 +60,15 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
||||
|
||||
val deprecation: DeprecationsPerUseSite?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
return fir.deprecation
|
||||
}
|
||||
|
||||
private fun ensureType(typeRef: FirTypeRef?) {
|
||||
when (typeRef) {
|
||||
null, is FirResolvedTypeRef -> {}
|
||||
is FirImplicitTypeRef -> ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||
else -> ensureResolved(FirResolvePhase.TYPES)
|
||||
is FirImplicitTypeRef -> lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||
else -> lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||
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.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.coneType
|
||||
@@ -26,7 +26,7 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
|
||||
|
||||
val deprecation: DeprecationsPerUseSite?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
|
||||
lazyResolveToPhase(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
|
||||
return fir.deprecation
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
||||
|
||||
val resolvedSuperTypeRefs: List<FirResolvedTypeRef>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.SUPER_TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return fir.superTypeRefs as List<FirResolvedTypeRef>
|
||||
}
|
||||
@@ -68,7 +68,7 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
||||
|
||||
val resolvedStatus: FirResolvedDeclarationStatus
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
return fir.status as FirResolvedDeclarationStatus
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,7 @@ class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(
|
||||
|
||||
val resolvedContextReceivers: List<FirContextReceiver>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
return fir.contextReceivers
|
||||
}
|
||||
}
|
||||
@@ -93,13 +93,13 @@ class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(cl
|
||||
|
||||
val resolvedStatus: FirResolvedDeclarationStatus
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.STATUS)
|
||||
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
return fir.status as FirResolvedDeclarationStatus
|
||||
}
|
||||
|
||||
val resolvedExpandedTypeRef: FirResolvedTypeRef
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.SUPER_TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||
return fir.expandedTypeRef as FirResolvedTypeRef
|
||||
}
|
||||
|
||||
|
||||
@@ -10,9 +10,8 @@ import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.name.*
|
||||
|
||||
sealed class FirFunctionSymbol<D : FirFunction>(
|
||||
@@ -23,7 +22,7 @@ sealed class FirFunctionSymbol<D : FirFunction>(
|
||||
|
||||
val resolvedContractDescription: FirResolvedContractDescription?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.CONTRACTS)
|
||||
lazyResolveToPhase(FirResolvePhase.CONTRACTS)
|
||||
return when (this) {
|
||||
is FirNamedFunctionSymbol -> fir.contractDescription
|
||||
is FirPropertyAccessorSymbol -> fir.contractDescription
|
||||
@@ -33,7 +32,7 @@ sealed class FirFunctionSymbol<D : FirFunction>(
|
||||
|
||||
val resolvedControlFlowGraphReference: FirControlFlowGraphReference?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.controlFlowGraphReference
|
||||
}
|
||||
}
|
||||
@@ -70,7 +69,7 @@ class FirConstructorSymbol(
|
||||
val resolvedDelegatedConstructorCall: FirDelegatedConstructorCall?
|
||||
get() {
|
||||
if (fir.delegatedConstructor == null) return null
|
||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.delegatedConstructor
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||
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.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.types.Variance
|
||||
@@ -26,7 +26,7 @@ class FirTypeParameterSymbol : FirClassifierSymbol<FirTypeParameter>() {
|
||||
|
||||
val resolvedBounds: List<FirResolvedTypeRef>
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.TYPES)
|
||||
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return fir.bounds as List<FirResolvedTypeRef>
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -44,7 +44,7 @@ open class FirPropertySymbol(
|
||||
|
||||
val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||
get() {
|
||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
||||
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||
return fir.controlFlowGraphReference
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user