[FIR] rename ensureResolve -> lazyResolveToPhase as it better describes function semantics
This commit is contained in:
+3
-3
@@ -45,7 +45,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
|||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||||
@@ -219,7 +219,7 @@ internal class KtSymbolByFirBuilder constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun buildFunctionSignature(firSymbol: FirNamedFunctionSymbol): KtFunctionLikeSignature<KtFirFunctionSymbol> {
|
fun buildFunctionSignature(firSymbol: FirNamedFunctionSymbol): KtFunctionLikeSignature<KtFirFunctionSymbol> {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
val functionSymbol = buildFunctionSymbol(firSymbol)
|
val functionSymbol = buildFunctionSymbol(firSymbol)
|
||||||
return KtFunctionLikeSignature(
|
return KtFunctionLikeSignature(
|
||||||
functionSymbol,
|
functionSymbol,
|
||||||
@@ -320,7 +320,7 @@ internal class KtSymbolByFirBuilder constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun buildPropertySignature(firSymbol: FirPropertySymbol): KtVariableLikeSignature<KtVariableSymbol> {
|
fun buildPropertySignature(firSymbol: FirPropertySymbol): KtVariableLikeSignature<KtVariableSymbol> {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
return KtVariableLikeSignature(
|
return KtVariableLikeSignature(
|
||||||
buildPropertySymbol(firSymbol),
|
buildPropertySymbol(firSymbol),
|
||||||
typeBuilder.buildKtType(firSymbol.fir.returnTypeRef),
|
typeBuilder.buildKtType(firSymbol.fir.returnTypeRef),
|
||||||
|
|||||||
+2
-2
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.FirVariable
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ImplicitReceiverValue
|
import org.jetbrains.kotlin.fir.resolve.calls.ImplicitReceiverValue
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
import org.jetbrains.kotlin.fir.types.receiverType
|
import org.jetbrains.kotlin.fir.types.receiverType
|
||||||
import org.jetbrains.kotlin.psi.KtExpression
|
import org.jetbrains.kotlin.psi.KtExpression
|
||||||
@@ -44,7 +44,7 @@ internal class KtFirCompletionCandidateChecker(
|
|||||||
possibleExplicitReceiver: KtExpression?,
|
possibleExplicitReceiver: KtExpression?,
|
||||||
): KtExtensionApplicabilityResult {
|
): KtExtensionApplicabilityResult {
|
||||||
require(firSymbolForCandidate is KtFirSymbol<*>)
|
require(firSymbolForCandidate is KtFirSymbol<*>)
|
||||||
firSymbolForCandidate.firSymbol.ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
firSymbolForCandidate.firSymbol.lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
val declaration = firSymbolForCandidate.firSymbol.fir as FirCallableDeclaration
|
val declaration = firSymbolForCandidate.firSymbol.fir as FirCallableDeclaration
|
||||||
return checkExtension(declaration, originalFile, nameExpression, possibleExplicitReceiver)
|
return checkExtension(declaration, originalFile, nameExpression, possibleExplicitReceiver)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.realPsi
|
import org.jetbrains.kotlin.fir.realPsi
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
|
import org.jetbrains.kotlin.fir.types.FirErrorTypeRef
|
||||||
@@ -50,7 +50,7 @@ internal class KtFirImportOptimizer(
|
|||||||
override fun analyseImports(file: KtFile): KtImportOptimizerResult {
|
override fun analyseImports(file: KtFile): KtImportOptimizerResult {
|
||||||
assertIsValidAndAccessible()
|
assertIsValidAndAccessible()
|
||||||
|
|
||||||
val firFile = file.getOrBuildFirFile(firResolveSession).apply { ensureResolved(FirResolvePhase.BODY_RESOLVE) }
|
val firFile = file.getOrBuildFirFile(firResolveSession).apply { lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) }
|
||||||
|
|
||||||
val existingImports = file.importDirectives
|
val existingImports = file.importDirectives
|
||||||
|
|
||||||
|
|||||||
+4
-5
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.analysis.api.fir.components
|
package org.jetbrains.kotlin.analysis.api.fir.components
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisApiInternals
|
||||||
import org.jetbrains.kotlin.analysis.api.components.KtImplicitReceiver
|
import org.jetbrains.kotlin.analysis.api.components.KtImplicitReceiver
|
||||||
import org.jetbrains.kotlin.analysis.api.components.KtScopeContext
|
import org.jetbrains.kotlin.analysis.api.components.KtScopeContext
|
||||||
@@ -44,7 +43,7 @@ import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||||
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -71,15 +70,15 @@ internal class KtFirScopeProvider(
|
|||||||
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? {
|
private inline fun <T> KtSymbolWithMembers.withFirForScope(crossinline body: (FirClass) -> T): T? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is KtFirNamedClassOrObjectSymbol -> {
|
is KtFirNamedClassOrObjectSymbol -> {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.TYPES)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
body(firSymbol.fir)
|
body(firSymbol.fir)
|
||||||
}
|
}
|
||||||
is KtFirAnonymousObjectSymbol -> {
|
is KtFirAnonymousObjectSymbol -> {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.TYPES)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
body(firSymbol.fir)
|
body(firSymbol.fir)
|
||||||
}
|
}
|
||||||
is KtFirEnumEntrySymbol -> {
|
is KtFirEnumEntrySymbol -> {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
val initializer = firSymbol.fir.initializer ?: return null
|
val initializer = firSymbol.fir.initializer ?: return null
|
||||||
check(initializer is FirAnonymousObjectExpression) { "Unexpected enum entry initializer: ${initializer.javaClass}" }
|
check(initializer is FirAnonymousObjectExpression) { "Unexpected enum entry initializer: ${initializer.javaClass}" }
|
||||||
body(initializer.anonymousObject)
|
body(initializer.anonymousObject)
|
||||||
|
|||||||
+4
-5
@@ -18,10 +18,9 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbolOrigin
|
|||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
|
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverrideFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverrideFunctionSymbol
|
||||||
@@ -113,7 +112,7 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
|||||||
callableSymbol: KtFirSymbol<*>,
|
callableSymbol: KtFirSymbol<*>,
|
||||||
crossinline process: (FirTypeScope, FirDeclaration) -> Unit
|
crossinline process: (FirTypeScope, FirDeclaration) -> Unit
|
||||||
) {
|
) {
|
||||||
containingDeclaration.firSymbol.ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
containingDeclaration.firSymbol.lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
val firContainer = containingDeclaration.firSymbol.fir
|
val firContainer = containingDeclaration.firSymbol.fir
|
||||||
val firCallableDeclaration = callableSymbol.firSymbol.fir
|
val firCallableDeclaration = callableSymbol.firSymbol.fir
|
||||||
|
|
||||||
@@ -154,7 +153,7 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
|||||||
require(superClass is KtFirSymbol<*>)
|
require(superClass is KtFirSymbol<*>)
|
||||||
|
|
||||||
if (subClass == superClass) return false
|
if (subClass == superClass) return false
|
||||||
subClass.firSymbol.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
subClass.firSymbol.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
return isSubClassOf(
|
return isSubClassOf(
|
||||||
subClass = subClass.firSymbol.fir as FirClass,
|
subClass = subClass.firSymbol.fir as FirClass,
|
||||||
superClass = superClass.firSymbol.fir as FirClass,
|
superClass = superClass.firSymbol.fir as FirClass,
|
||||||
@@ -169,7 +168,7 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
|||||||
if (!checkDeep) return false
|
if (!checkDeep) return false
|
||||||
subClass.superConeTypes.forEach { superType ->
|
subClass.superConeTypes.forEach { superType ->
|
||||||
val superOfSub = superType.toRegularClassSymbol(rootModuleSession) ?: return@forEach
|
val superOfSub = superType.toRegularClassSymbol(rootModuleSession) ?: return@forEach
|
||||||
superOfSub.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
superOfSub.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
if (isSubClassOf(superOfSub.fir, superClass, checkDeep = true)) return true
|
if (isSubClassOf(superOfSub.fir, superClass, checkDeep = true)) return true
|
||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
|
|||||||
+2
-6
@@ -14,14 +14,10 @@ import org.jetbrains.kotlin.analysis.api.fir.renderer.FirIdeRenderer
|
|||||||
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
|
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.types.KtFirType
|
import org.jetbrains.kotlin.analysis.api.fir.types.KtFirType
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||||
import org.jetbrains.kotlin.analysis.api.signatures.KtCallableSignature
|
|
||||||
import org.jetbrains.kotlin.analysis.api.signatures.KtFunctionLikeSignature
|
|
||||||
import org.jetbrains.kotlin.analysis.api.signatures.KtVariableLikeSignature
|
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtDeclarationSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.prettyPrint
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
|
|
||||||
internal class KtFirSymbolDeclarationRendererProvider(
|
internal class KtFirSymbolDeclarationRendererProvider(
|
||||||
override val analysisSession: KtFirAnalysisSession,
|
override val analysisSession: KtFirAnalysisSession,
|
||||||
@@ -35,7 +31,7 @@ internal class KtFirSymbolDeclarationRendererProvider(
|
|||||||
|
|
||||||
override fun renderDeclaration(symbol: KtDeclarationSymbol, options: KtDeclarationRendererOptions): String {
|
override fun renderDeclaration(symbol: KtDeclarationSymbol, options: KtDeclarationRendererOptions): String {
|
||||||
require(symbol is KtFirSymbol<*>)
|
require(symbol is KtFirSymbol<*>)
|
||||||
symbol.firSymbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
return FirIdeRenderer.render(symbol.firSymbol.fir, options, symbol.firSymbol.fir.moduleData.session)
|
return FirIdeRenderer.render(symbol.firSymbol.fir, options, symbol.firSymbol.fir.moduleData.session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.fir.expressions.FirGetClassCall
|
|||||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
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.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||||
@@ -66,7 +66,7 @@ internal class KtFirTypeProvider(
|
|||||||
|
|
||||||
override fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType {
|
override fun buildSelfClassType(symbol: KtNamedClassOrObjectSymbol): KtType {
|
||||||
require(symbol is KtFirNamedClassOrObjectSymbol)
|
require(symbol is KtFirNamedClassOrObjectSymbol)
|
||||||
symbol.firSymbol.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
val firClass = symbol.firSymbol.fir
|
val firClass = symbol.firSymbol.fir
|
||||||
val type = ConeClassLikeTypeImpl(
|
val type = ConeClassLikeTypeImpl(
|
||||||
firClass.symbol.toLookupTag(),
|
firClass.symbol.toLookupTag(),
|
||||||
|
|||||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.references.FirNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.*
|
import org.jetbrains.kotlin.fir.types.impl.*
|
||||||
@@ -68,7 +68,7 @@ internal object FirCompileTimeConstantEvaluator {
|
|||||||
mode == KtConstantEvaluationMode.CONSTANT_EXPRESSION_EVALUATION && !isConst -> null
|
mode == KtConstantEvaluationMode.CONSTANT_EXPRESSION_EVALUATION && !isConst -> null
|
||||||
isVal && hasInitializer -> {
|
isVal && hasInitializer -> {
|
||||||
// NB: the initializer could be [FirLazyExpression] in [BodyBuildingMode.LAZY_BODIES].
|
// NB: the initializer could be [FirLazyExpression] in [BodyBuildingMode.LAZY_BODIES].
|
||||||
this.ensureResolved(FirResolvePhase.BODY_RESOLVE) // to unwrap lazy body
|
this.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) // to unwrap lazy body
|
||||||
evaluate(fir.initializer, mode)
|
evaluate(fir.initializer, mode)
|
||||||
}
|
}
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+2
-2
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
import org.jetbrains.kotlin.fir.symbols.impl.isExtension
|
||||||
@@ -100,7 +100,7 @@ internal class KtFirKotlinPropertySymbol(
|
|||||||
// NB: `field` in accessors indicates the property should have a backing field. To see that, though, we need BODY_RESOLVE.
|
// NB: `field` in accessors indicates the property should have a backing field. To see that, though, we need BODY_RESOLVE.
|
||||||
override val hasBackingField: Boolean
|
override val hasBackingField: Boolean
|
||||||
get() = withValidityAssertion {
|
get() = withValidityAssertion {
|
||||||
firSymbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
firSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
firSymbol.fir.hasBackingField
|
firSymbol.fir.hasBackingField
|
||||||
}
|
}
|
||||||
override val isLateInit: Boolean get() = withValidityAssertion { firSymbol.isLateInit }
|
override val isLateInit: Boolean get() = withValidityAssertion { firSymbol.isLateInit }
|
||||||
|
|||||||
+5
-6
@@ -20,11 +20,10 @@ import org.jetbrains.kotlin.fir.declarations.FirClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.originalForIntersectionOverrideAttr
|
import org.jetbrains.kotlin.fir.originalForIntersectionOverrideAttr
|
||||||
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
|
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl
|
import org.jetbrains.kotlin.fir.resolve.SessionHolderImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.util.ImplementationStatus
|
import org.jetbrains.kotlin.util.ImplementationStatus
|
||||||
|
|
||||||
internal class KtFirOverrideInfoProvider(
|
internal class KtFirOverrideInfoProvider(
|
||||||
@@ -37,7 +36,7 @@ internal class KtFirOverrideInfoProvider(
|
|||||||
require(classSymbol is KtFirSymbol<*>)
|
require(classSymbol is KtFirSymbol<*>)
|
||||||
|
|
||||||
// Inspecting visibility requires resolving to status
|
// Inspecting visibility requires resolving to status
|
||||||
classSymbol.firSymbol.ensureResolved(FirResolvePhase.STATUS)
|
classSymbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return false
|
val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return false
|
||||||
val parentClassFir = classSymbol.firSymbol.fir as? FirClass ?: return false
|
val parentClassFir = classSymbol.firSymbol.fir as? FirClass ?: return false
|
||||||
|
|
||||||
@@ -49,7 +48,7 @@ internal class KtFirOverrideInfoProvider(
|
|||||||
require(parentClassSymbol is KtFirSymbol<*>)
|
require(parentClassSymbol is KtFirSymbol<*>)
|
||||||
|
|
||||||
// Inspecting implementation status requires resolving to status
|
// Inspecting implementation status requires resolving to status
|
||||||
parentClassSymbol.firSymbol.ensureResolved(FirResolvePhase.STATUS)
|
parentClassSymbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return null
|
val memberFir = memberSymbol.firSymbol.fir as? FirCallableDeclaration ?: return null
|
||||||
val parentClassFir = parentClassSymbol.firSymbol.fir as? FirClass ?: return null
|
val parentClassFir = parentClassSymbol.firSymbol.fir as? FirClass ?: return null
|
||||||
|
|
||||||
@@ -64,7 +63,7 @@ internal class KtFirOverrideInfoProvider(
|
|||||||
|
|
||||||
override fun getOriginalContainingClassForOverride(symbol: KtCallableSymbol): KtClassOrObjectSymbol? {
|
override fun getOriginalContainingClassForOverride(symbol: KtCallableSymbol): KtClassOrObjectSymbol? {
|
||||||
require(symbol is KtFirSymbol<*>)
|
require(symbol is KtFirSymbol<*>)
|
||||||
symbol.firSymbol.ensureResolved(FirResolvePhase.STATUS)
|
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
|
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
|
||||||
val containingClass =
|
val containingClass =
|
||||||
getOriginalOverriddenSymbol(firDeclaration)?.containingClass()?.toSymbol(rootModuleSession) ?: return null
|
getOriginalOverriddenSymbol(firDeclaration)?.containingClass()?.toSymbol(rootModuleSession) ?: return null
|
||||||
@@ -74,7 +73,7 @@ internal class KtFirOverrideInfoProvider(
|
|||||||
|
|
||||||
override fun getOriginalOverriddenSymbol(symbol: KtCallableSymbol): KtCallableSymbol? {
|
override fun getOriginalOverriddenSymbol(symbol: KtCallableSymbol): KtCallableSymbol? {
|
||||||
require(symbol is KtFirSymbol<*>)
|
require(symbol is KtFirSymbol<*>)
|
||||||
symbol.firSymbol.ensureResolved(FirResolvePhase.STATUS)
|
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
|
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
|
||||||
return getOriginalOverriddenSymbol(firDeclaration)
|
return getOriginalOverriddenSymbol(firDeclaration)
|
||||||
?.buildSymbol(analysisSession.firSymbolBuilder) as KtCallableSymbol?
|
?.buildSymbol(analysisSession.firSymbolBuilder) as KtCallableSymbol?
|
||||||
|
|||||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
|||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -90,7 +90,7 @@ internal fun FirCallableSymbol<*>.dispatchReceiverType(
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun FirVariableSymbol<*>.getKtConstantInitializer(): KtInitializerValue? {
|
internal fun FirVariableSymbol<*>.getKtConstantInitializer(): KtInitializerValue? {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
val firInitializer = fir.initializer ?: return null
|
val firInitializer = fir.initializer ?: return null
|
||||||
return firInitializer.asKtInitializerValue()
|
return firInitializer.asKtInitializerValue()
|
||||||
}
|
}
|
||||||
+4
-4
@@ -7,14 +7,14 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
import org.jetbrains.kotlin.fir.ThreadSafeMutableState
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirResolvableModuleSession
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionInvalidator
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.LLFirSessionInvalidator
|
||||||
|
|
||||||
@ThreadSafeMutableState
|
@ThreadSafeMutableState
|
||||||
internal class LLFirPhaseManager(private val sessionInvalidator: LLFirSessionInvalidator) : FirPhaseManager() {
|
internal class LLFirLazyDeclarationResolver(private val sessionInvalidator: LLFirSessionInvalidator) : FirLazyDeclarationResolver() {
|
||||||
override fun ensureResolved(symbol: FirBasedSymbol<*>, requiredPhase: FirResolvePhase) {
|
override fun lazyResolveToPhase(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase) {
|
||||||
val fir = symbol.fir
|
val fir = symbol.fir
|
||||||
val session = fir.moduleData.session
|
val session = fir.moduleData.session
|
||||||
if (session !is LLFirResolvableModuleSession) return
|
if (session !is LLFirResolvableModuleSession) return
|
||||||
@@ -23,7 +23,7 @@ internal class LLFirPhaseManager(private val sessionInvalidator: LLFirSessionInv
|
|||||||
moduleComponents.lazyFirDeclarationsResolver.lazyResolveDeclaration(
|
moduleComponents.lazyFirDeclarationsResolver.lazyResolveDeclaration(
|
||||||
firDeclarationToResolve = fir,
|
firDeclarationToResolve = fir,
|
||||||
scopeSession = moduleComponents.scopeSessionProvider.getScopeSession(),
|
scopeSession = moduleComponents.scopeSessionProvider.getScopeSession(),
|
||||||
toPhase = requiredPhase,
|
toPhase = toPhase,
|
||||||
checkPCE = true,
|
checkPCE = true,
|
||||||
)
|
)
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformerForReturnTypeCalculator
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformerForReturnTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignation
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirDeclarationDesignation
|
||||||
@@ -64,7 +64,7 @@ private class LLFirDesignatedBodyResolveTransformerForReturnTypeCalculatorImpl(
|
|||||||
private inline fun <D : FirCallableDeclaration> D.processCallable(body: (FirDeclarationDesignation) -> Unit) {
|
private inline fun <D : FirCallableDeclaration> D.processCallable(body: (FirDeclarationDesignation) -> Unit) {
|
||||||
if (this !== targetDeclaration) return
|
if (this !== targetDeclaration) return
|
||||||
if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return
|
if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
if (returnTypeRef is FirImplicitTypeRef) {
|
if (returnTypeRef is FirImplicitTypeRef) {
|
||||||
val declarationList = designation.filterIsInstance<FirDeclaration>()
|
val declarationList = designation.filterIsInstance<FirDeclaration>()
|
||||||
check(declarationList.isNotEmpty()) { "Invalid empty declaration designation" }
|
check(declarationList.isNotEmpty()) { "Invalid empty declaration designation" }
|
||||||
|
|||||||
+3
-3
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.ReturnTypeCalculator
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.BodyResolveContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformerForReturnTypeCalculator
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirDesignatedBodyResolveTransformerForReturnTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.ImplicitBodyResolveComputationSession
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
|
|
||||||
@@ -62,9 +62,9 @@ private class LLFirEnsureBasedTransformerForReturnTypeCalculatorImpl(
|
|||||||
private fun <T : FirCallableDeclaration> T.ensureReturnType() {
|
private fun <T : FirCallableDeclaration> T.ensureReturnType() {
|
||||||
if (this !== targetDeclaration) return
|
if (this !== targetDeclaration) return
|
||||||
if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return
|
if (resolvePhase < FirResolvePhase.TYPES && returnTypeRef is FirResolvedTypeRef) return
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
if (returnTypeRef is FirImplicitTypeRef) {
|
if (returnTypeRef is FirImplicitTypeRef) {
|
||||||
ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -19,11 +19,11 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirCloneableSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseCheckingPhaseManager
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirCompilerLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
||||||
import org.jetbrains.kotlin.fir.session.registerModuleData
|
import org.jetbrains.kotlin.fir.session.registerModuleData
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
@@ -50,7 +50,7 @@ import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
|||||||
bindSession(this@session)
|
bindSession(this@session)
|
||||||
}
|
}
|
||||||
registerIdeComponents(project)
|
registerIdeComponents(project)
|
||||||
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
|
register(FirLazyDeclarationResolver::class, FirCompilerLazyDeclarationResolver)
|
||||||
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
||||||
registerModuleData(moduleData)
|
registerModuleData(moduleData)
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -20,13 +20,13 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseCheckingPhaseManager
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirCompilerLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
import org.jetbrains.kotlin.fir.session.registerCommonComponents
|
||||||
import org.jetbrains.kotlin.fir.session.registerCommonJavaComponents
|
import org.jetbrains.kotlin.fir.session.registerCommonJavaComponents
|
||||||
import org.jetbrains.kotlin.fir.session.registerJavaSpecificResolveComponents
|
import org.jetbrains.kotlin.fir.session.registerJavaSpecificResolveComponents
|
||||||
import org.jetbrains.kotlin.fir.session.registerModuleData
|
import org.jetbrains.kotlin.fir.session.registerModuleData
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
||||||
|
|
||||||
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
|
@OptIn(PrivateSessionConstructor::class, SessionConfiguration::class)
|
||||||
@@ -47,7 +47,7 @@ internal class LLFirLibrarySessionFactory(
|
|||||||
val moduleData = LLFirModuleData(ktLibraryModule).apply { bindSession(this@session) }
|
val moduleData = LLFirModuleData(ktLibraryModule).apply { bindSession(this@session) }
|
||||||
registerModuleData(moduleData)
|
registerModuleData(moduleData)
|
||||||
registerIdeComponents(project)
|
registerIdeComponents(project)
|
||||||
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
|
register(FirLazyDeclarationResolver::class, FirCompilerLazyDeclarationResolver)
|
||||||
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
registerCommonComponents(LanguageVersionSettingsImpl.DEFAULT/*TODO*/)
|
||||||
registerCommonJavaComponents(JavaModuleResolver.getInstance(project))
|
registerCommonJavaComponents(JavaModuleResolver.getInstance(project))
|
||||||
registerJavaSpecificResolveComponents()
|
registerJavaSpecificResolveComponents()
|
||||||
|
|||||||
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseManager
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirDependentModuleProvidersBySessions
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirDependentModuleProvidersBySessions
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirModuleWithDependenciesSymbolProvider
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirProvider
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.providers.LLFirProvider
|
||||||
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.session.*
|
import org.jetbrains.kotlin.fir.session.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
@@ -77,7 +77,7 @@ internal class LLFirNonUnderContentRootSessionFactory(private val project: Proje
|
|||||||
)
|
)
|
||||||
|
|
||||||
register(FirProvider::class, provider)
|
register(FirProvider::class, provider)
|
||||||
register(FirPhaseManager::class, LLFirPhaseManager(sessionInvalidator))
|
register(FirLazyDeclarationResolver::class, LLFirLazyDeclarationResolver(sessionInvalidator))
|
||||||
|
|
||||||
val dependencyProvider = LLFirDependentModuleProvidersBySessions(this) {
|
val dependencyProvider = LLFirDependentModuleProvidersBySessions(this) {
|
||||||
add(builtinsSession)
|
add(builtinsSession)
|
||||||
|
|||||||
+4
-4
@@ -10,7 +10,7 @@ import com.intellij.psi.search.GlobalSearchScope
|
|||||||
import com.intellij.psi.search.ProjectScope
|
import com.intellij.psi.search.ProjectScope
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirGlobalResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirModuleResolveComponents
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirPhaseManager
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.LLFirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.*
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.*
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.LLFirLibrarySessionFactory
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.registerIdeComponents
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.registerIdeComponents
|
||||||
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirKotlinScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.session.*
|
import org.jetbrains.kotlin.fir.session.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
|
||||||
@@ -101,7 +101,7 @@ internal object LLFirSessionFactory {
|
|||||||
)
|
)
|
||||||
|
|
||||||
register(FirProvider::class, provider)
|
register(FirProvider::class, provider)
|
||||||
register(FirPhaseManager::class, LLFirPhaseManager(sessionInvalidator))
|
register(FirLazyDeclarationResolver::class, LLFirLazyDeclarationResolver(sessionInvalidator))
|
||||||
|
|
||||||
registerCompilerPluginServices(contentScope, project, module)
|
registerCompilerPluginServices(contentScope, project, module)
|
||||||
registerCompilerPluginExtensions(project, module)
|
registerCompilerPluginExtensions(project, module)
|
||||||
@@ -206,7 +206,7 @@ internal object LLFirSessionFactory {
|
|||||||
|
|
||||||
register(FirProvider::class, provider)
|
register(FirProvider::class, provider)
|
||||||
|
|
||||||
register(FirPhaseManager::class, LLFirPhaseManager(sessionInvalidator))
|
register(FirLazyDeclarationResolver::class, LLFirLazyDeclarationResolver(sessionInvalidator))
|
||||||
|
|
||||||
// We need FirRegisteredPluginAnnotations during extensions' registration process
|
// We need FirRegisteredPluginAnnotations during extensions' registration process
|
||||||
val annotationsResolver = project.createAnnotationResolver(contentScope)
|
val annotationsResolver = project.createAnnotationResolver(contentScope)
|
||||||
|
|||||||
+3
-3
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.realPsi
|
|||||||
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithAttributes
|
import org.jetbrains.kotlin.fir.renderer.FirDeclarationRendererWithAttributes
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirResolvePhaseRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirResolvePhaseRenderer
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -66,7 +66,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
|||||||
.findResolveMe()
|
.findResolveMe()
|
||||||
for (currentPhase in FirResolvePhase.values()) {
|
for (currentPhase in FirResolvePhase.values()) {
|
||||||
if (currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue
|
if (currentPhase == FirResolvePhase.SEALED_CLASS_INHERITORS) continue
|
||||||
declarationToResolve.ensureResolved(currentPhase)
|
declarationToResolve.lazyResolveToPhase(currentPhase)
|
||||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||||
resultBuilder.append("\n${currentPhase.name}:\n")
|
resultBuilder.append("\n${currentPhase.name}:\n")
|
||||||
renderer.renderElementAsString(firFile)
|
renderer.renderElementAsString(firFile)
|
||||||
@@ -76,7 +76,7 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
|
|||||||
resolveWithClearCaches(ktFile) { firResolveSession ->
|
resolveWithClearCaches(ktFile) { firResolveSession ->
|
||||||
check(firResolveSession is LLFirSourceResolveSession)
|
check(firResolveSession is LLFirSourceResolveSession)
|
||||||
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
val firFile = firResolveSession.getOrBuildFirFile(ktFile)
|
||||||
firFile.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
firFile.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
resultBuilder.append("\nFILE RAW TO BODY:\n")
|
resultBuilder.append("\nFILE RAW TO BODY:\n")
|
||||||
renderer.renderElementAsString(firFile)
|
renderer.renderElementAsString(firFile)
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -13,11 +13,8 @@ import org.jetbrains.kotlin.fir.AbstractFirAnalyzerFacade
|
|||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
|
||||||
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
import org.jetbrains.kotlin.fir.backend.Fir2IrResult
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirSealedClassInheritorsProcessor
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.model.TestFile
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.FirFile
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirSealedClassInheritorsProcessor
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirSealedClassInheritorsProcessor
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
import org.jetbrains.kotlin.test.services.PreAnalysisHandler
|
||||||
@@ -58,7 +58,7 @@ class SealedClassesInheritorsCaclulatorPreAnalysisHandler(
|
|||||||
firFiles: List<FirFile>,
|
firFiles: List<FirFile>,
|
||||||
tmpFirResolveSession: LLFirResolveSession
|
tmpFirResolveSession: LLFirResolveSession
|
||||||
): Map<ClassId, List<ClassId>> {
|
): Map<ClassId, List<ClassId>> {
|
||||||
firFiles.forEach { it.ensureResolved(FirResolvePhase.TYPES) }
|
firFiles.forEach { it.lazyResolveToPhase(FirResolvePhase.TYPES) }
|
||||||
val inheritorsCollector = FirSealedClassInheritorsProcessor.InheritorsCollector(tmpFirResolveSession.useSiteFirSession)
|
val inheritorsCollector = FirSealedClassInheritorsProcessor.InheritorsCollector(tmpFirResolveSession.useSiteFirSession)
|
||||||
val sealedClassInheritorsMap = mutableMapOf<FirRegularClass, MutableList<ClassId>>()
|
val sealedClassInheritorsMap = mutableMapOf<FirRegularClass, MutableList<ClassId>>()
|
||||||
firFiles.forEach { it.accept(inheritorsCollector, sealedClassInheritorsMap) }
|
firFiles.forEach { it.accept(inheritorsCollector, sealedClassInheritorsMap) }
|
||||||
|
|||||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.toFirRegularClassSymbol
|
|||||||
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
||||||
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenProperties
|
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenProperties
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.classId
|
import org.jetbrains.kotlin.fir.types.classId
|
||||||
@@ -63,7 +63,7 @@ object FirJvmOverridesBackwardCompatibilityHelper : FirOverridesBackwardCompatib
|
|||||||
visitedSymbols += symbol
|
visitedSymbols += symbol
|
||||||
|
|
||||||
val originalMemberSymbol = symbol.originalOrSelf()
|
val originalMemberSymbol = symbol.originalOrSelf()
|
||||||
originalMemberSymbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
originalMemberSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val originalMember = originalMemberSymbol.fir
|
val originalMember = originalMemberSymbol.fir
|
||||||
if (originalMember.annotations.any { it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId == platformDependentAnnotation }) {
|
if (originalMember.annotations.any { it.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.classId == platformDependentAnnotation }) {
|
||||||
|
|||||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
|||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolved
|
import org.jetbrains.kotlin.fir.resolved
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -50,7 +50,7 @@ fun FirAnnotation.getAllowedAnnotationTargets(session: FirSession): Set<KotlinTa
|
|||||||
if (annotationTypeRef is FirErrorTypeRef) return KotlinTarget.values().toSet()
|
if (annotationTypeRef is FirErrorTypeRef) return KotlinTarget.values().toSet()
|
||||||
val annotationClassSymbol = (this.annotationTypeRef.coneType as? ConeClassLikeType)
|
val annotationClassSymbol = (this.annotationTypeRef.coneType as? ConeClassLikeType)
|
||||||
?.fullyExpandedType(session)?.lookupTag?.toSymbol(session) ?: return defaultAnnotationTargets
|
?.fullyExpandedType(session)?.lookupTag?.toSymbol(session) ?: return defaultAnnotationTargets
|
||||||
annotationClassSymbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
annotationClassSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
return annotationClassSymbol.getAllowedAnnotationTargets()
|
return annotationClassSymbol.getAllowedAnnotationTargets()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.languageVersionSettings
|
|||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
@@ -75,7 +75,7 @@ private fun FirDeclaration.getOwnSinceKotlinVersion(session: FirSession): FirSin
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun FirClassLikeSymbol<*>.consider() {
|
fun FirClassLikeSymbol<*>.consider() {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
this.fir.consider()
|
this.fir.consider()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
object FirCommonConstructorDelegationIssuesChecker : FirRegularClassChecker() {
|
object FirCommonConstructorDelegationIssuesChecker : FirRegularClassChecker() {
|
||||||
@@ -95,7 +95,7 @@ object FirCommonConstructorDelegationIssuesChecker : FirRegularClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirConstructor.getDelegated(): FirConstructor? {
|
private fun FirConstructor.getDelegated(): FirConstructor? {
|
||||||
this.symbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
this.symbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
val delegatedConstructorSymbol = delegatedConstructor
|
val delegatedConstructorSymbol = delegatedConstructor
|
||||||
?.calleeReference.safeAs<FirResolvedNamedReference>()
|
?.calleeReference.safeAs<FirResolvedNamedReference>()
|
||||||
?.resolvedSymbol
|
?.resolvedSymbol
|
||||||
|
|||||||
+3
-3
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.PACKAGE_MEMBER
|
import org.jetbrains.kotlin.fir.scopes.impl.PACKAGE_MEMBER
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.util.ListMultimap
|
import org.jetbrains.kotlin.fir.util.ListMultimap
|
||||||
@@ -83,7 +83,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
conflictingFile: FirFile?,
|
conflictingFile: FirFile?,
|
||||||
session: FirSession
|
session: FirSession
|
||||||
) {
|
) {
|
||||||
conflictingSymbol.ensureResolved(FirResolvePhase.STATUS)
|
conflictingSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val conflicting = conflictingSymbol.fir
|
val conflicting = conflictingSymbol.fir
|
||||||
if (declaration.moduleData != conflicting.moduleData) return
|
if (declaration.moduleData != conflicting.moduleData) return
|
||||||
@@ -130,7 +130,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
packageMemberScope.processClassifiersByNameWithSubstitution(declarationName) { symbol, _ ->
|
packageMemberScope.processClassifiersByNameWithSubstitution(declarationName) { symbol, _ ->
|
||||||
symbol.ensureResolved(FirResolvePhase.STATUS)
|
symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val classWithSameName = symbol.fir as? FirRegularClass
|
val classWithSameName = symbol.fir as? FirRegularClass
|
||||||
classWithSameName?.onConstructors { constructor ->
|
classWithSameName?.onConstructors { constructor ->
|
||||||
|
|||||||
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateErr
|
|||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
||||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -186,7 +186,7 @@ object FirDestructuringDeclarationChecker : FirPropertyChecker() {
|
|||||||
private val FirQualifiedAccessExpression.resolvedVariable: FirVariable?
|
private val FirQualifiedAccessExpression.resolvedVariable: FirVariable?
|
||||||
get() {
|
get() {
|
||||||
val symbol = calleeReference.resolvedSymbol as? FirVariableSymbol<*> ?: return null
|
val symbol = calleeReference.resolvedSymbol as? FirVariableSymbol<*> ?: return null
|
||||||
symbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
symbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
return symbol.fir
|
return symbol.fir
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenFunctions
|
|||||||
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenProperties
|
import org.jetbrains.kotlin.fir.scopes.getDirectOverriddenProperties
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.visibilityChecker
|
import org.jetbrains.kotlin.fir.visibilityChecker
|
||||||
@@ -160,7 +160,7 @@ object FirOverrideChecker : FirClassChecker() {
|
|||||||
val containingDeclarations = context.containingDeclarations + containingClass
|
val containingDeclarations = context.containingDeclarations + containingClass
|
||||||
val visibilityChecker = context.session.visibilityChecker
|
val visibilityChecker = context.session.visibilityChecker
|
||||||
val hasVisibleBase = overriddenSymbols.any {
|
val hasVisibleBase = overriddenSymbols.any {
|
||||||
it.ensureResolved(FirResolvePhase.STATUS)
|
it.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val fir = it.fir
|
val fir = it.fir
|
||||||
visibilityChecker.isVisible(
|
visibilityChecker.isVisible(
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens.QUEST
|
import org.jetbrains.kotlin.lexer.KtTokens.QUEST
|
||||||
@@ -75,7 +75,7 @@ object FirClassLiteralChecker : FirGetClassCallChecker() {
|
|||||||
// TODO: differentiate RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS
|
// TODO: differentiate RESERVED_SYNTAX_IN_CALLABLE_REFERENCE_LHS
|
||||||
if (argument.typeArguments.isNotEmpty() && !argument.typeRef.coneType.isAllowedInClassLiteral(context)) {
|
if (argument.typeArguments.isNotEmpty() && !argument.typeRef.coneType.isAllowedInClassLiteral(context)) {
|
||||||
val symbol = argument.symbol
|
val symbol = argument.symbol
|
||||||
symbol?.ensureResolved(FirResolvePhase.TYPES)
|
symbol?.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val typeParameters = (symbol?.fir as? FirTypeParameterRefsOwner)?.typeParameters
|
val typeParameters = (symbol?.fir as? FirTypeParameterRefsOwner)?.typeParameters
|
||||||
// Among type parameter references, only count actual type parameter while discarding [FirOuterClassTypeParameterRef]
|
// Among type parameter references, only count actual type parameter while discarding [FirOuterClassTypeParameterRef]
|
||||||
|
|||||||
+6
-6
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.scopes.processDirectlyOverriddenFunctions
|
|||||||
import org.jetbrains.kotlin.fir.scopes.processDirectlyOverriddenProperties
|
import org.jetbrains.kotlin.fir.scopes.processDirectlyOverriddenProperties
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
@@ -69,13 +69,13 @@ object FirOptInUsageBaseChecker {
|
|||||||
|
|
||||||
// Note: receiver is an OptIn marker class and parameter is an annotated member owner class / self class name
|
// Note: receiver is an OptIn marker class and parameter is an annotated member owner class / self class name
|
||||||
fun FirRegularClassSymbol.loadExperimentalityForMarkerAnnotation(annotatedOwnerClassName: String? = null): Experimentality? {
|
fun FirRegularClassSymbol.loadExperimentalityForMarkerAnnotation(annotatedOwnerClassName: String? = null): Experimentality? {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
return fir.loadExperimentalityForMarkerAnnotation(annotatedOwnerClassName)
|
return fir.loadExperimentalityForMarkerAnnotation(annotatedOwnerClassName)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirBasedSymbol<*>.loadExperimentalitiesFromAnnotationTo(session: FirSession, result: MutableCollection<Experimentality>) {
|
fun FirBasedSymbol<*>.loadExperimentalitiesFromAnnotationTo(session: FirSession, result: MutableCollection<Experimentality>) {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
fir.loadExperimentalitiesFromAnnotationTo(session, result)
|
fir.loadExperimentalitiesFromAnnotationTo(session, result)
|
||||||
}
|
}
|
||||||
@@ -133,7 +133,7 @@ object FirOptInUsageBaseChecker {
|
|||||||
fromSetter: Boolean,
|
fromSetter: Boolean,
|
||||||
dispatchReceiverType: ConeKotlinType?,
|
dispatchReceiverType: ConeKotlinType?,
|
||||||
): Set<Experimentality> {
|
): Set<Experimentality> {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val fir = this.fir
|
val fir = this.fir
|
||||||
if (!visited.add(fir)) return emptySet()
|
if (!visited.add(fir)) return emptySet()
|
||||||
val result = knownExperimentalities ?: SmartSet.create()
|
val result = knownExperimentalities ?: SmartSet.create()
|
||||||
@@ -141,7 +141,7 @@ object FirOptInUsageBaseChecker {
|
|||||||
if (fir is FirCallableDeclaration) {
|
if (fir is FirCallableDeclaration) {
|
||||||
val parentClassSymbol = fir.containingClass()?.toSymbol(session) as? FirRegularClassSymbol
|
val parentClassSymbol = fir.containingClass()?.toSymbol(session) as? FirRegularClassSymbol
|
||||||
if (fir.isSubstitutionOrIntersectionOverride) {
|
if (fir.isSubstitutionOrIntersectionOverride) {
|
||||||
parentClassSymbol?.ensureResolved(FirResolvePhase.STATUS)
|
parentClassSymbol?.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val parentClassScope = parentClassSymbol?.unsubstitutedScope(context)
|
val parentClassScope = parentClassSymbol?.unsubstitutedScope(context)
|
||||||
if (this is FirNamedFunctionSymbol) {
|
if (this is FirNamedFunctionSymbol) {
|
||||||
parentClassScope?.processDirectlyOverriddenFunctions(this) {
|
parentClassScope?.processDirectlyOverriddenFunctions(this) {
|
||||||
@@ -188,7 +188,7 @@ object FirOptInUsageBaseChecker {
|
|||||||
val accessibility = fir.checkSinceKotlinVersionAccessibility(context)
|
val accessibility = fir.checkSinceKotlinVersionAccessibility(context)
|
||||||
if (accessibility is FirSinceKotlinAccessibility.NotAccessibleButWasExperimental) {
|
if (accessibility is FirSinceKotlinAccessibility.NotAccessibleButWasExperimental) {
|
||||||
accessibility.markerClasses.forEach {
|
accessibility.markerClasses.forEach {
|
||||||
it.ensureResolved(FirResolvePhase.STATUS)
|
it.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
result.addIfNotNull(it.fir.loadExperimentalityForMarkerAnnotation())
|
result.addIfNotNull(it.fir.loadExperimentalityForMarkerAnnotation())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isEnumClass
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirEnumEntrySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
@@ -221,7 +221,7 @@ object FirUninitializedEnumChecker : FirQualifiedAccessExpressionChecker() {
|
|||||||
|
|
||||||
private val FirPropertySymbol.lazyDelegation: FirAnonymousFunction?
|
private val FirPropertySymbol.lazyDelegation: FirAnonymousFunction?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val property = this.fir
|
val property = this.fir
|
||||||
if (property.delegate == null || property.delegate !is FirFunctionCall) return null
|
if (property.delegate == null || property.delegate !is FirFunctionCall) return null
|
||||||
|
|||||||
+2
-2
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.fir.resolved
|
|||||||
import org.jetbrains.kotlin.fir.resolvedSymbol
|
import org.jetbrains.kotlin.fir.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.isFunctionalType
|
import org.jetbrains.kotlin.fir.types.isFunctionalType
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
@@ -75,7 +75,7 @@ object UnusedChecker : FirControlFlowChecker() {
|
|||||||
for (dataPerLabel in dataPerNode.values) {
|
for (dataPerLabel in dataPerNode.values) {
|
||||||
val data = dataPerLabel[variableSymbol] ?: continue
|
val data = dataPerLabel[variableSymbol] ?: continue
|
||||||
|
|
||||||
variableSymbol.ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
variableSymbol.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
@OptIn(SymbolInternals::class)
|
@OptIn(SymbolInternals::class)
|
||||||
val variable = variableSymbol.fir
|
val variable = variableSymbol.fir
|
||||||
val variableSource = variable.source.takeIf { it?.elementType != KtNodeTypes.DESTRUCTURING_DECLARATION }
|
val variableSource = variable.source.takeIf { it?.elementType != KtNodeTypes.DESTRUCTURING_DECLARATION }
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -44,7 +44,7 @@ object FirOptInUsageTypeRefChecker : FirTypeRefChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val symbol = coneType.lookupTag.toSymbol(context.session) ?: return
|
val symbol = coneType.lookupTag.toSymbol(context.session) ?: return
|
||||||
symbol.ensureResolved(FirResolvePhase.STATUS)
|
symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val classId = symbol.classId
|
val classId = symbol.classId
|
||||||
val lastAnnotationCall = context.qualifiedAccessOrAnnotationCalls.lastOrNull() as? FirAnnotation
|
val lastAnnotationCall = context.qualifiedAccessOrAnnotationCalls.lastOrNull() as? FirAnnotation
|
||||||
if (lastAnnotationCall == null || lastAnnotationCall.annotationTypeRef !== typeRef) {
|
if (lastAnnotationCall == null || lastAnnotationCall.annotationTypeRef !== typeRef) {
|
||||||
|
|||||||
+3
-3
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.jvm.JvmCallConflictResolverFactory
|
|||||||
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirQualifierResolverImpl
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirQualifierResolverImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl
|
import org.jetbrains.kotlin.fir.resolve.providers.impl.FirTypeResolverImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseCheckingPhaseManager
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirCompilerLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClassIndex
|
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClassIndex
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideService
|
import org.jetbrains.kotlin.fir.scopes.FirOverrideService
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
import org.jetbrains.kotlin.fir.scopes.FirPlatformClassMapper
|
||||||
@@ -37,7 +37,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.FirDeclaredMemberScopeProvider
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirDynamicMembersStorage
|
import org.jetbrains.kotlin.fir.scopes.impl.FirDynamicMembersStorage
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirIntersectionOverrideStorage
|
import org.jetbrains.kotlin.fir.scopes.impl.FirIntersectionOverrideStorage
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirSubstitutionOverrideStorage
|
import org.jetbrains.kotlin.fir.scopes.impl.FirSubstitutionOverrideStorage
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.fir.types.FirCorrespondingSupertypesCache
|
import org.jetbrains.kotlin.fir.types.FirCorrespondingSupertypesCache
|
||||||
import org.jetbrains.kotlin.fir.types.TypeComponents
|
import org.jetbrains.kotlin.fir.types.TypeComponents
|
||||||
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
|
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
|
||||||
@@ -70,7 +70,7 @@ fun FirSession.registerCommonComponents(languageVersionSettings: LanguageVersion
|
|||||||
fun FirSession.registerCliCompilerOnlyComponents() {
|
fun FirSession.registerCliCompilerOnlyComponents() {
|
||||||
register(FirCachesFactory::class, FirThreadUnsafeCachesFactory)
|
register(FirCachesFactory::class, FirThreadUnsafeCachesFactory)
|
||||||
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
|
register(SealedClassInheritorsProvider::class, SealedClassInheritorsProviderImpl)
|
||||||
register(FirPhaseManager::class, FirPhaseCheckingPhaseManager)
|
register(FirLazyDeclarationResolver::class, FirCompilerLazyDeclarationResolver)
|
||||||
|
|
||||||
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
register(FirRegisteredPluginAnnotations::class, FirRegisteredPluginAnnotationsImpl(this))
|
||||||
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
register(FirPredicateBasedProvider::class, FirPredicateBasedProviderImpl(this))
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractOverrideChecker
|
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractOverrideChecker
|
||||||
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptorRepresentation
|
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptorRepresentation
|
||||||
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
|
|
||||||
@@ -205,8 +205,8 @@ class JavaOverrideChecker internal constructor(
|
|||||||
overrideCandidate: FirCallableDeclaration,
|
overrideCandidate: FirCallableDeclaration,
|
||||||
baseDeclaration: FirCallableDeclaration
|
baseDeclaration: FirCallableDeclaration
|
||||||
): ConeSubstitutor {
|
): ConeSubstitutor {
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
|
|
||||||
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
||||||
return ConeSubstitutor.Empty
|
return ConeSubstitutor.Empty
|
||||||
@@ -220,8 +220,8 @@ class JavaOverrideChecker internal constructor(
|
|||||||
override fun isOverriddenFunction(overrideCandidate: FirSimpleFunction, baseDeclaration: FirSimpleFunction): Boolean {
|
override fun isOverriddenFunction(overrideCandidate: FirSimpleFunction, baseDeclaration: FirSimpleFunction): Boolean {
|
||||||
if (overrideCandidate.isStatic != baseDeclaration.isStatic) return false
|
if (overrideCandidate.isStatic != baseDeclaration.isStatic) return false
|
||||||
|
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
|
|
||||||
// NB: overrideCandidate is from Java and has no receiver
|
// NB: overrideCandidate is from Java and has no receiver
|
||||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||||
@@ -244,8 +244,8 @@ class JavaOverrideChecker internal constructor(
|
|||||||
override fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
|
override fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
|
||||||
if (baseDeclaration.modality == Modality.FINAL) return false
|
if (baseDeclaration.modality == Modality.FINAL) return false
|
||||||
|
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
|
|
||||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||||
return when (overrideCandidate) {
|
return when (overrideCandidate) {
|
||||||
|
|||||||
+4
-4
@@ -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.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.createTypeSubstitutorByTypeConstructor
|
import org.jetbrains.kotlin.fir.resolve.substitution.createTypeSubstitutorByTypeConstructor
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
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.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -32,7 +32,7 @@ internal fun ConeKotlinType.unsubstitutedUnderlyingTypeForInlineClass(session: F
|
|||||||
?.lookupTag
|
?.lookupTag
|
||||||
?.toSymbol(session) as? FirRegularClassSymbol
|
?.toSymbol(session) as? FirRegularClassSymbol
|
||||||
?: return null
|
?: return null
|
||||||
symbol.ensureResolved(FirResolvePhase.STATUS)
|
symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return symbol.fir.inlineClassRepresentation?.underlyingType
|
return symbol.fir.inlineClassRepresentation?.underlyingType
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,9 +63,9 @@ private fun ConeSimpleKotlinType.valueClassRepresentationTypeMarkersList(session
|
|||||||
val symbol = this.toSymbol(session) as? FirRegularClassSymbol ?: return null
|
val symbol = this.toSymbol(session) as? FirRegularClassSymbol ?: return null
|
||||||
if (!symbol.fir.isInline) return null
|
if (!symbol.fir.isInline) return null
|
||||||
symbol.fir.valueClassRepresentation?.let { return it.underlyingPropertyNamesToTypes }
|
symbol.fir.valueClassRepresentation?.let { return it.underlyingPropertyNamesToTypes }
|
||||||
symbol.ensureResolved(FirResolvePhase.TYPES)
|
symbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val constructorSymbol = symbol.fir.primaryConstructorIfAny(session) ?: return null
|
val constructorSymbol = symbol.fir.primaryConstructorIfAny(session) ?: return null
|
||||||
return constructorSymbol.valueParameterSymbols
|
return constructorSymbol.valueParameterSymbols
|
||||||
.onEach { it.ensureResolved(FirResolvePhase.TYPES) }
|
.onEach { it.lazyResolveToPhase(FirResolvePhase.TYPES) }
|
||||||
.map { it.name to it.resolvedReturnType as ConeSimpleKotlinType }
|
.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.FirUnstableSmartcastTypeScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.scopeForClass
|
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.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
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 fullyExpandedType = fullyExpandedType(useSiteSession)
|
||||||
val fir = fullyExpandedType.lookupTag.toSymbol(useSiteSession)?.fir as? FirClass ?: return null
|
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)
|
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.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.types.model.CaptureStatus
|
import org.jetbrains.kotlin.types.model.CaptureStatus
|
||||||
@@ -34,13 +34,13 @@ abstract class SupertypeSupplier {
|
|||||||
override fun forClass(firClass: FirClass, useSiteSession: FirSession): List<ConeClassLikeType> {
|
override fun forClass(firClass: FirClass, useSiteSession: FirSession): List<ConeClassLikeType> {
|
||||||
if (!firClass.isLocal) {
|
if (!firClass.isLocal) {
|
||||||
// for local classes the phase may not be updated till that moment
|
// 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
|
return firClass.superConeTypes
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun expansionForTypeAlias(typeAlias: FirTypeAlias, useSiteSession: FirSession): ConeClassLikeType? {
|
override fun expansionForTypeAlias(typeAlias: FirTypeAlias, useSiteSession: FirSession): ConeClassLikeType? {
|
||||||
typeAlias.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
typeAlias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
return typeAlias.expandedConeType
|
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.declarations.utils.expandedConeType
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
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.symbols.impl.FirTypeAliasSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.util.component2
|
|||||||
fun ConeClassLikeType.fullyExpandedType(
|
fun ConeClassLikeType.fullyExpandedType(
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
|
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
|
||||||
alias.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
alias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
alias.expandedConeType
|
alias.expandedConeType
|
||||||
},
|
},
|
||||||
): ConeClassLikeType {
|
): ConeClassLikeType {
|
||||||
@@ -69,7 +69,7 @@ private fun ConeClassLikeType.fullyExpandedTypeNoCache(
|
|||||||
fun ConeClassLikeType.directExpansionType(
|
fun ConeClassLikeType.directExpansionType(
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
|
expandedConeType: (FirTypeAlias) -> ConeClassLikeType? = { alias ->
|
||||||
alias.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
alias.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
alias.expandedConeType
|
alias.expandedConeType
|
||||||
},
|
},
|
||||||
): ConeClassLikeType? {
|
): ConeClassLikeType? {
|
||||||
|
|||||||
+3
-3
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
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.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -21,8 +21,8 @@ fun ConeKotlinType.ensureResolvedTypeDeclaration(
|
|||||||
) {
|
) {
|
||||||
if (this !is ConeClassLikeType) return
|
if (this !is ConeClassLikeType) return
|
||||||
|
|
||||||
lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase)
|
lookupTag.toSymbol(useSiteSession)?.lazyResolveToPhase(requiredPhase)
|
||||||
fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase)
|
fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.lazyResolveToPhase(requiredPhase)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirTypeRef.ensureResolvedTypeDeclaration(
|
fun FirTypeRef.ensureResolvedTypeDeclaration(
|
||||||
|
|||||||
+5
-5
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.scopes.FakeOverrideSubstitution
|
|||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -279,7 +279,7 @@ class FirClassSubstitutionScope(
|
|||||||
)
|
)
|
||||||
|
|
||||||
private fun createSubstitutedData(member: FirCallableDeclaration, symbolForOverride: FirBasedSymbol<*>): SubstitutedData {
|
private fun createSubstitutedData(member: FirCallableDeclaration, symbolForOverride: FirBasedSymbol<*>): SubstitutedData {
|
||||||
member.ensureResolved(FirResolvePhase.TYPES)
|
member.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val (newTypeParameters, substitutor) = FirFakeOverrideGenerator.createNewTypeParametersAndSubstitutor(
|
val (newTypeParameters, substitutor) = FirFakeOverrideGenerator.createNewTypeParametersAndSubstitutor(
|
||||||
session,
|
session,
|
||||||
member as FirTypeParameterRefsOwner,
|
member as FirTypeParameterRefsOwner,
|
||||||
@@ -293,7 +293,7 @@ class FirClassSubstitutionScope(
|
|||||||
|
|
||||||
val newDispatchReceiverType = dispatchReceiverTypeForSubstitutedMembers.substitute(substitutor)
|
val newDispatchReceiverType = dispatchReceiverTypeForSubstitutedMembers.substitute(substitutor)
|
||||||
|
|
||||||
member.ensureResolved(FirResolvePhase.STATUS)
|
member.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
||||||
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, member.symbol) }
|
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, member.symbol) }
|
||||||
val newReturnType = returnType?.substitute(substitutor)
|
val newReturnType = returnType?.substitute(substitutor)
|
||||||
@@ -312,7 +312,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
|
||||||
|
|
||||||
member.symbol.ensureResolved(FirResolvePhase.STATUS)
|
member.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
||||||
// TODO: do we have fields with implicit type?
|
// TODO: do we have fields with implicit type?
|
||||||
val newReturnType = returnType?.substitute() ?: return original
|
val newReturnType = returnType?.substitute() ?: return original
|
||||||
@@ -325,7 +325,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
|
||||||
|
|
||||||
member.symbol.ensureResolved(FirResolvePhase.STATUS)
|
member.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
val returnType = member.returnTypeRef.coneTypeSafe<ConeKotlinType>()
|
||||||
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, original) }
|
val fakeOverrideSubstitution = runIf(returnType == null) { FakeOverrideSubstitution(substitutor, original) }
|
||||||
val newReturnType = returnType?.substitute()
|
val newReturnType = returnType?.substitute()
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.resolve.scope
|
|||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
|
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
|
||||||
@@ -49,7 +49,7 @@ class FirDelegatedMemberScope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun buildScope(delegateField: FirField): FirTypeScope? {
|
private fun buildScope(delegateField: FirField): FirTypeScope? {
|
||||||
delegateField.ensureResolved(FirResolvePhase.TYPES)
|
delegateField.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return delegateField.returnTypeRef.coneType.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
return delegateField.returnTypeRef.coneType.scope(session, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedTypeDeclaration
|
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.fir.types.*
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
import org.jetbrains.kotlin.types.model.KotlinTypeMarker
|
||||||
@@ -102,8 +102,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
|
|||||||
overrideCandidate: FirCallableDeclaration,
|
overrideCandidate: FirCallableDeclaration,
|
||||||
baseDeclaration: FirCallableDeclaration
|
baseDeclaration: FirCallableDeclaration
|
||||||
): ConeSubstitutor? {
|
): ConeSubstitutor? {
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val substitutor = buildSubstitutorForOverridesCheck(overrideCandidate, baseDeclaration, session) ?: return null
|
val substitutor = buildSubstitutorForOverridesCheck(overrideCandidate, baseDeclaration, session) ?: return null
|
||||||
if (
|
if (
|
||||||
overrideCandidate.typeParameters.isNotEmpty() &&
|
overrideCandidate.typeParameters.isNotEmpty() &&
|
||||||
@@ -128,8 +128,8 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
|
|||||||
|
|
||||||
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
|
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
|
||||||
|
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
if (!isEqualReceiverTypes(overrideCandidate.receiverTypeRef, baseDeclaration.receiverTypeRef, substitutor)) return false
|
if (!isEqualReceiverTypes(overrideCandidate.receiverTypeRef, baseDeclaration.receiverTypeRef, substitutor)) return false
|
||||||
|
|
||||||
return overrideCandidate.valueParameters.zip(baseDeclaration.valueParameters).all { (memberParam, selfParam) ->
|
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
|
if (overrideCandidate !is FirProperty) return false
|
||||||
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
|
val substitutor = buildTypeParametersSubstitutorIfCompatible(overrideCandidate, baseDeclaration) ?: return false
|
||||||
overrideCandidate.ensureResolved(FirResolvePhase.TYPES)
|
overrideCandidate.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
baseDeclaration.ensureResolved(FirResolvePhase.TYPES)
|
baseDeclaration.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return isEqualReceiverTypes(overrideCandidate.receiverTypeRef, baseDeclaration.receiverTypeRef, substitutor)
|
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.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
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.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.types.TypeCheckerState
|
import org.jetbrains.kotlin.types.TypeCheckerState
|
||||||
@@ -286,7 +286,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
|||||||
is ConeTypeVariableTypeConstructor -> emptyList()
|
is ConeTypeVariableTypeConstructor -> emptyList()
|
||||||
is ConeTypeParameterLookupTag -> symbol.resolvedBounds.map { it.coneType }
|
is ConeTypeParameterLookupTag -> symbol.resolvedBounds.map { it.coneType }
|
||||||
is ConeClassLikeLookupTag -> {
|
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 FirClassSymbol<*> -> symbol.fir.superConeTypes
|
||||||
is FirTypeAliasSymbol -> listOfNotNull(symbol.fir.expandedConeType)
|
is FirTypeAliasSymbol -> listOfNotNull(symbol.fir.expandedConeType)
|
||||||
else -> listOf(session.builtinTypes.anyType.type)
|
else -> listOf(session.builtinTypes.anyType.type)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectData
|
import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectData
|
||||||
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||||
@@ -183,7 +183,7 @@ fun BodyResolveComponents.typeForQualifier(resolvedQualifier: FirResolvedQualifi
|
|||||||
val classSymbol = resolvedQualifier.symbol
|
val classSymbol = resolvedQualifier.symbol
|
||||||
val resultType = resolvedQualifier.resultType
|
val resultType = resolvedQualifier.resultType
|
||||||
if (classSymbol != null) {
|
if (classSymbol != null) {
|
||||||
classSymbol.ensureResolved(FirResolvePhase.TYPES)
|
classSymbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val declaration = classSymbol.fir
|
val declaration = classSymbol.fir
|
||||||
if (declaration !is FirTypeAlias || resolvedQualifier.typeArguments.isEmpty()) {
|
if (declaration !is FirTypeAlias || resolvedQualifier.typeArguments.isEmpty()) {
|
||||||
typeForQualifierByDeclaration(declaration, resultType, session)?.let { return it }
|
typeForQualifierByDeclaration(declaration, resultType, session)?.let { return it }
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.scopes.FirScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator
|
import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator
|
||||||
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
||||||
import org.jetbrains.kotlin.fir.scopes.scopeForClass
|
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.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.visibilityChecker
|
import org.jetbrains.kotlin.fir.visibilityChecker
|
||||||
@@ -242,7 +242,7 @@ private fun processConstructors(
|
|||||||
if (matchedSymbol != null) {
|
if (matchedSymbol != null) {
|
||||||
val scope = when (matchedSymbol) {
|
val scope = when (matchedSymbol) {
|
||||||
is FirTypeAliasSymbol -> {
|
is FirTypeAliasSymbol -> {
|
||||||
matchedSymbol.ensureResolved(FirResolvePhase.TYPES)
|
matchedSymbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val type = matchedSymbol.fir.expandedTypeRef.coneTypeUnsafe<ConeClassLikeType>().fullyExpandedType(session)
|
val type = matchedSymbol.fir.expandedTypeRef.coneTypeUnsafe<ConeClassLikeType>().fullyExpandedType(session)
|
||||||
val basicScope = type.scope(session, bodyResolveComponents.scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
val basicScope = type.scope(session, bodyResolveComponents.scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.resolve.inference.model.ConeExplicitTypeParamete
|
|||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
import org.jetbrains.kotlin.fir.scopes.impl.toConeType
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemOperation
|
import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemOperation
|
||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.resolve.calls.inference.model.SimpleConstraintSystem
|
|||||||
internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
|
internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
|
||||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||||
val declaration = candidate.symbol.fir
|
val declaration = candidate.symbol.fir
|
||||||
candidate.symbol.ensureResolved(FirResolvePhase.STATUS)
|
candidate.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
if (declaration !is FirTypeParameterRefsOwner || declaration.typeParameters.isEmpty()) {
|
if (declaration !is FirTypeParameterRefsOwner || declaration.typeParameters.isEmpty()) {
|
||||||
candidate.substitutor = ConeSubstitutor.Empty
|
candidate.substitutor = ConeSubstitutor.Empty
|
||||||
candidate.freshVariables = emptyList()
|
candidate.freshVariables = emptyList()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.fir.scopes.FirUnstableSmartcastTypeScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
||||||
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
|
import org.jetbrains.kotlin.fir.symbols.SyntheticSymbol
|
||||||
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.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.visibilityChecker
|
import org.jetbrains.kotlin.fir.visibilityChecker
|
||||||
@@ -432,7 +432,7 @@ internal object MapArguments : ResolutionStage() {
|
|||||||
|
|
||||||
internal object CheckArguments : CheckerStage() {
|
internal object CheckArguments : CheckerStage() {
|
||||||
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) {
|
||||||
candidate.symbol.ensureResolved(FirResolvePhase.STATUS)
|
candidate.symbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
val argumentMapping =
|
val argumentMapping =
|
||||||
candidate.argumentMapping ?: error("Argument should be already mapped while checking arguments!")
|
candidate.argumentMapping ?: error("Argument should be already mapped while checking arguments!")
|
||||||
for (argument in callInfo.arguments) {
|
for (argument in callInfo.arguments) {
|
||||||
|
|||||||
+6
-3
@@ -7,9 +7,12 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirPhaseManager
|
import org.jetbrains.kotlin.fir.symbols.FirLazyDeclarationResolver
|
||||||
|
|
||||||
object FirPhaseCheckingPhaseManager : FirPhaseManager() {
|
/**
|
||||||
override fun ensureResolved(symbol: FirBasedSymbol<*>, requiredPhase: FirResolvePhase) {
|
* Compiler is non-lazy, so it does nothing.
|
||||||
|
*/
|
||||||
|
object FirCompilerLazyDeclarationResolver : FirLazyDeclarationResolver() {
|
||||||
|
override fun lazyResolveToPhase(symbol: FirBasedSymbol<*>, toPhase: FirResolvePhase) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag
|
import org.jetbrains.kotlin.fir.resolve.getSymbolByLookupTag
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||||
@@ -73,7 +73,7 @@ class FirSealedClassInheritorsProcessor(
|
|||||||
return when (classLikeSymbol) {
|
return when (classLikeSymbol) {
|
||||||
is FirRegularClassSymbol -> classLikeSymbol.fir
|
is FirRegularClassSymbol -> classLikeSymbol.fir
|
||||||
is FirTypeAliasSymbol -> {
|
is FirTypeAliasSymbol -> {
|
||||||
classLikeSymbol.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
classLikeSymbol.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
extractClassFromTypeRef(symbolProvider, classLikeSymbol.fir.expandedTypeRef)
|
extractClassFromTypeRef(symbolProvider, classLikeSymbol.fir.expandedTypeRef)
|
||||||
}
|
}
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+5
-5
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.LocalClassesNavigationInfo
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.LocalClassesNavigationInfo
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirCompositeScope
|
import org.jetbrains.kotlin.fir.scopes.FirCompositeScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousObjectSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol
|
||||||
@@ -167,7 +167,7 @@ open class FirDesignatedStatusResolveTransformer(
|
|||||||
data: FirResolvedDeclarationStatus?
|
data: FirResolvedDeclarationStatus?
|
||||||
): FirStatement {
|
): FirStatement {
|
||||||
if (shouldSkipClass(regularClass)) return regularClass
|
if (shouldSkipClass(regularClass)) return regularClass
|
||||||
regularClass.symbol.ensureResolved(FirResolvePhase.TYPES)
|
regularClass.symbol.lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
val classLocated = this.classLocated
|
val classLocated = this.classLocated
|
||||||
/*
|
/*
|
||||||
* In designated status resolve we should resolve status only of target class and it's members
|
* In designated status resolve we should resolve status only of target class and it's members
|
||||||
@@ -383,7 +383,7 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
|
|
||||||
private fun forceResolveStatusOfCorrespondingClass(typeRef: FirTypeRef) {
|
private fun forceResolveStatusOfCorrespondingClass(typeRef: FirTypeRef) {
|
||||||
val superClassSymbol = typeRef.coneType.toSymbol(session)
|
val superClassSymbol = typeRef.coneType.toSymbol(session)
|
||||||
superClassSymbol?.ensureResolved(FirResolvePhase.SUPER_TYPES)
|
superClassSymbol?.lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
when (superClassSymbol) {
|
when (superClassSymbol) {
|
||||||
is FirRegularClassSymbol -> forceResolveStatusesOfClass(superClassSymbol.fir)
|
is FirRegularClassSymbol -> forceResolveStatusesOfClass(superClassSymbol.fir)
|
||||||
is FirTypeAliasSymbol -> forceResolveStatusOfCorrespondingClass(superClassSymbol.fir.expandedTypeRef)
|
is FirTypeAliasSymbol -> forceResolveStatusOfCorrespondingClass(superClassSymbol.fir.expandedTypeRef)
|
||||||
@@ -487,12 +487,12 @@ abstract class AbstractFirStatusResolveTransformer(
|
|||||||
val overridden = statusResolver.getOverriddenProperties(property, containingClass)
|
val overridden = statusResolver.getOverriddenProperties(property, containingClass)
|
||||||
|
|
||||||
val overriddenProperties = overridden.map {
|
val overriddenProperties = overridden.map {
|
||||||
it.ensureResolved(FirResolvePhase.STATUS)
|
it.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
it.status as FirResolvedDeclarationStatus
|
it.status as FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
val overriddenSetters = overridden.mapNotNull {
|
val overriddenSetters = overridden.mapNotNull {
|
||||||
it.setter?.ensureResolved(FirResolvePhase.STATUS)
|
it.setter?.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
it.setter?.status as? FirResolvedDeclarationStatus
|
it.setter?.status as? FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.toEffectiveVisibility
|
import org.jetbrains.kotlin.fir.toEffectiveVisibility
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
@@ -108,7 +108,7 @@ class FirStatusResolver(
|
|||||||
): FirResolvedDeclarationStatus {
|
): FirResolvedDeclarationStatus {
|
||||||
val statuses = overriddenStatuses ?: getOverriddenProperties(property, containingClass)
|
val statuses = overriddenStatuses ?: getOverriddenProperties(property, containingClass)
|
||||||
.map {
|
.map {
|
||||||
it.ensureResolved(FirResolvePhase.STATUS)
|
it.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
it.status as FirResolvedDeclarationStatus
|
it.status as FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.TransformImplicitType
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.runContractResolveForLocalClass
|
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.runContractResolveForLocalClass
|
||||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.scopes.fakeOverrideSubstitution
|
import org.jetbrains.kotlin.fir.scopes.fakeOverrideSubstitution
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirSyntheticPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
|
||||||
@@ -271,7 +271,7 @@ private class ReturnTypeCalculatorWithJump(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (canHaveContracts) {
|
if (canHaveContracts) {
|
||||||
declaration.ensureResolved(FirResolvePhase.CONTRACTS)
|
declaration.lazyResolveToPhase(FirResolvePhase.CONTRACTS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.packageFqName
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.scopeSessionKey
|
import org.jetbrains.kotlin.fir.resolve.scopeSessionKey
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
private val ALL_IMPORTS = scopeSessionKey<FirFile, ListStorageFirScope>()
|
private val ALL_IMPORTS = scopeSessionKey<FirFile, ListStorageFirScope>()
|
||||||
@@ -39,7 +39,7 @@ private fun doCreateImportingScopes(
|
|||||||
session: FirSession,
|
session: FirSession,
|
||||||
scopeSession: ScopeSession
|
scopeSession: ScopeSession
|
||||||
): List<FirScope> {
|
): List<FirScope> {
|
||||||
file.ensureResolved(FirResolvePhase.IMPORTS)
|
file.lazyResolveToPhase(FirResolvePhase.IMPORTS)
|
||||||
val excludedImportNames =
|
val excludedImportNames =
|
||||||
file.imports.filter { it.aliasName != null }.mapNotNullTo(hashSetOf()) { it.importedFqName }.ifEmpty { emptySet() }
|
file.imports.filter { it.aliasName != null }.mapNotNullTo(hashSetOf()) { it.importedFqName }.ifEmpty { emptySet() }
|
||||||
return listOf(
|
return listOf(
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataKey
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
|
|
||||||
private object PublishedApiEffectiveVisibilityKey : FirDeclarationDataKey()
|
private object PublishedApiEffectiveVisibilityKey : FirDeclarationDataKey()
|
||||||
@@ -18,6 +18,6 @@ var FirDeclaration.publishedApiEffectiveVisibility: EffectiveVisibility? by FirD
|
|||||||
|
|
||||||
inline val FirCallableSymbol<*>.publishedApiEffectiveVisibility: EffectiveVisibility?
|
inline val FirCallableSymbol<*>.publishedApiEffectiveVisibility: EffectiveVisibility?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return fir.publishedApiEffectiveVisibility
|
return fir.publishedApiEffectiveVisibility
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.declarations
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
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 org.jetbrains.kotlin.resolve.multiplatform.ExpectActualCompatibility
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ private var FirDeclaration.actualForExpectMap: WeakHashMap<FirSession, FirBasedS
|
|||||||
|
|
||||||
val FirBasedSymbol<*>.expectForActual: ExpectForActualData?
|
val FirBasedSymbol<*>.expectForActual: ExpectForActualData?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
lazyResolveToPhase(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||||
return fir.expectForActual
|
return fir.expectForActual
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ fun FirDeclaration.getActualForExpect(useSiteSession: FirSession): FirBasedSymbo
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun FirBasedSymbol<*>.getActualForExpect(session: FirSession): FirBasedSymbol<*>? {
|
fun FirBasedSymbol<*>.getActualForExpect(session: FirSession): FirBasedSymbol<*>? {
|
||||||
ensureResolved(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
lazyResolveToPhase(FirResolvePhase.EXPECT_ACTUAL_MATCHING)
|
||||||
return fir.getActualForExpect(session)
|
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.
|
// 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-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.
|
// 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
|
return fir.annotations
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedAnnotationsWithClassIds: List<FirAnnotation>
|
val resolvedAnnotationsWithClassIds: List<FirAnnotation>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return fir.annotations
|
return fir.annotations
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedAnnotationClassIds: List<ClassId>
|
val resolvedAnnotationClassIds: List<ClassId>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return fir.annotations.mapNotNull { (it.annotationTypeRef.coneType as? ConeClassLikeType)?.lookupTag?.classId }
|
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.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -33,13 +33,13 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
|||||||
|
|
||||||
val resolvedContextReceivers: List<FirContextReceiver>
|
val resolvedContextReceivers: List<FirContextReceiver>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return fir.contextReceivers
|
return fir.contextReceivers
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedStatus: FirResolvedDeclarationStatus
|
val resolvedStatus: FirResolvedDeclarationStatus
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return fir.status as FirResolvedDeclarationStatus
|
return fir.status as FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,15 +60,15 @@ abstract class FirCallableSymbol<D : FirCallableDeclaration> : FirBasedSymbol<D>
|
|||||||
|
|
||||||
val deprecation: DeprecationsPerUseSite?
|
val deprecation: DeprecationsPerUseSite?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return fir.deprecation
|
return fir.deprecation
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ensureType(typeRef: FirTypeRef?) {
|
private fun ensureType(typeRef: FirTypeRef?) {
|
||||||
when (typeRef) {
|
when (typeRef) {
|
||||||
null, is FirResolvedTypeRef -> {}
|
null, is FirResolvedTypeRef -> {}
|
||||||
is FirImplicitTypeRef -> ensureResolved(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
is FirImplicitTypeRef -> lazyResolveToPhase(FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE)
|
||||||
else -> ensureResolved(FirResolvePhase.TYPES)
|
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.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
@@ -26,7 +26,7 @@ sealed class FirClassLikeSymbol<D : FirClassLikeDeclaration>(
|
|||||||
|
|
||||||
val deprecation: DeprecationsPerUseSite?
|
val deprecation: DeprecationsPerUseSite?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
|
lazyResolveToPhase(FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS)
|
||||||
return fir.deprecation
|
return fir.deprecation
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
|||||||
|
|
||||||
val resolvedSuperTypeRefs: List<FirResolvedTypeRef>
|
val resolvedSuperTypeRefs: List<FirResolvedTypeRef>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.SUPER_TYPES)
|
lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
return fir.superTypeRefs as List<FirResolvedTypeRef>
|
return fir.superTypeRefs as List<FirResolvedTypeRef>
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ sealed class FirClassSymbol<C : FirClass>(classId: ClassId) : FirClassLikeSymbol
|
|||||||
|
|
||||||
val resolvedStatus: FirResolvedDeclarationStatus
|
val resolvedStatus: FirResolvedDeclarationStatus
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return fir.status as FirResolvedDeclarationStatus
|
return fir.status as FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol<FirRegularClass>(
|
|||||||
|
|
||||||
val resolvedContextReceivers: List<FirContextReceiver>
|
val resolvedContextReceivers: List<FirContextReceiver>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
return fir.contextReceivers
|
return fir.contextReceivers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,13 +93,13 @@ class FirTypeAliasSymbol(classId: ClassId) : FirClassLikeSymbol<FirTypeAlias>(cl
|
|||||||
|
|
||||||
val resolvedStatus: FirResolvedDeclarationStatus
|
val resolvedStatus: FirResolvedDeclarationStatus
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.STATUS)
|
lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||||
return fir.status as FirResolvedDeclarationStatus
|
return fir.status as FirResolvedDeclarationStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
val resolvedExpandedTypeRef: FirResolvedTypeRef
|
val resolvedExpandedTypeRef: FirResolvedTypeRef
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.SUPER_TYPES)
|
lazyResolveToPhase(FirResolvePhase.SUPER_TYPES)
|
||||||
return fir.expandedTypeRef as FirResolvedTypeRef
|
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.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
import org.jetbrains.kotlin.fir.expressions.FirDelegatedConstructorCall
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
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.resolvedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ensureResolved
|
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
|
|
||||||
sealed class FirFunctionSymbol<D : FirFunction>(
|
sealed class FirFunctionSymbol<D : FirFunction>(
|
||||||
@@ -23,7 +22,7 @@ sealed class FirFunctionSymbol<D : FirFunction>(
|
|||||||
|
|
||||||
val resolvedContractDescription: FirResolvedContractDescription?
|
val resolvedContractDescription: FirResolvedContractDescription?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.CONTRACTS)
|
lazyResolveToPhase(FirResolvePhase.CONTRACTS)
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirNamedFunctionSymbol -> fir.contractDescription
|
is FirNamedFunctionSymbol -> fir.contractDescription
|
||||||
is FirPropertyAccessorSymbol -> fir.contractDescription
|
is FirPropertyAccessorSymbol -> fir.contractDescription
|
||||||
@@ -33,7 +32,7 @@ sealed class FirFunctionSymbol<D : FirFunction>(
|
|||||||
|
|
||||||
val resolvedControlFlowGraphReference: FirControlFlowGraphReference?
|
val resolvedControlFlowGraphReference: FirControlFlowGraphReference?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
return fir.controlFlowGraphReference
|
return fir.controlFlowGraphReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -70,7 +69,7 @@ class FirConstructorSymbol(
|
|||||||
val resolvedDelegatedConstructorCall: FirDelegatedConstructorCall?
|
val resolvedDelegatedConstructorCall: FirDelegatedConstructorCall?
|
||||||
get() {
|
get() {
|
||||||
if (fir.delegatedConstructor == null) return null
|
if (fir.delegatedConstructor == null) return null
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
return fir.delegatedConstructor
|
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.declarations.FirTypeParameter
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
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.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -26,7 +26,7 @@ class FirTypeParameterSymbol : FirClassifierSymbol<FirTypeParameter>() {
|
|||||||
|
|
||||||
val resolvedBounds: List<FirResolvedTypeRef>
|
val resolvedBounds: List<FirResolvedTypeRef>
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.TYPES)
|
lazyResolveToPhase(FirResolvePhase.TYPES)
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
return fir.bounds as List<FirResolvedTypeRef>
|
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.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
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.CallableId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -44,7 +44,7 @@ open class FirPropertySymbol(
|
|||||||
|
|
||||||
val controlFlowGraphReference: FirControlFlowGraphReference?
|
val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||||
get() {
|
get() {
|
||||||
ensureResolved(FirResolvePhase.BODY_RESOLVE)
|
lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
|
||||||
return fir.controlFlowGraphReference
|
return fir.controlFlowGraphReference
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user