Use .firSymbolProvider instead of service, deprecate FirSession.service
This commit is contained in:
@@ -20,10 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.withNullability
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.*
|
import org.jetbrains.kotlin.fir.symbols.*
|
||||||
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
|
||||||
@@ -1172,7 +1169,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
|
|
||||||
private fun FlowContent.generate(resolvedQualifier: FirResolvedQualifier) {
|
private fun FlowContent.generate(resolvedQualifier: FirResolvedQualifier) {
|
||||||
resolved {
|
resolved {
|
||||||
val symbolProvider = session.service<FirSymbolProvider>()
|
val symbolProvider = session.firSymbolProvider
|
||||||
val classId = resolvedQualifier.classId
|
val classId = resolvedQualifier.classId
|
||||||
if (classId != null) {
|
if (classId != null) {
|
||||||
symbolRef(symbolProvider.getClassLikeSymbolByFqName(classId)) {
|
symbolRef(symbolProvider.getClassLikeSymbolByFqName(classId)) {
|
||||||
|
|||||||
+2
-1
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.FirVariable
|
|||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.getOrPut
|
import org.jetbrains.kotlin.fir.resolve.getOrPut
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
@@ -43,7 +44,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
private val irSymbolTable: SymbolTable,
|
private val irSymbolTable: SymbolTable,
|
||||||
private val moduleDescriptor: FirModuleDescriptor
|
private val moduleDescriptor: FirModuleDescriptor
|
||||||
) {
|
) {
|
||||||
private val firSymbolProvider = session.service<FirSymbolProvider>()
|
private val firSymbolProvider = session.firSymbolProvider
|
||||||
|
|
||||||
private val firProvider = session.service<FirProvider>()
|
private val firProvider = session.service<FirProvider>()
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,8 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirPropertyFromParameterCallableReference
|
import org.jetbrains.kotlin.fir.references.FirPropertyFromParameterCallableReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.buildUseSiteScope
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.SyntheticPropertySymbol
|
import org.jetbrains.kotlin.fir.resolve.calls.SyntheticPropertySymbol
|
||||||
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.impl.FirClassSubstitutionScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
@@ -335,7 +332,7 @@ class Fir2IrVisitor(
|
|||||||
if (ownerClassId == null) {
|
if (ownerClassId == null) {
|
||||||
lastClass
|
lastClass
|
||||||
} else {
|
} else {
|
||||||
val classLikeSymbol = session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(ownerClassId)
|
val classLikeSymbol = session.firSymbolProvider.getClassLikeSymbolByFqName(ownerClassId)
|
||||||
if (classLikeSymbol !is FirClassSymbol) {
|
if (classLikeSymbol !is FirClassSymbol) {
|
||||||
lastClass
|
lastClass
|
||||||
} else {
|
} else {
|
||||||
@@ -423,7 +420,7 @@ class Fir2IrVisitor(
|
|||||||
val constructedIrType = constructedTypeRef.toIrType(this@Fir2IrVisitor.session, declarationStorage)
|
val constructedIrType = constructedTypeRef.toIrType(this@Fir2IrVisitor.session, declarationStorage)
|
||||||
// TODO: find delegated constructor correctly
|
// TODO: find delegated constructor correctly
|
||||||
val classId = constructedClassSymbol.classId
|
val classId = constructedClassSymbol.classId
|
||||||
val provider = this@Fir2IrVisitor.session.service<FirSymbolProvider>()
|
val provider = this@Fir2IrVisitor.session.firSymbolProvider
|
||||||
var constructorSymbol: FirConstructorSymbol? = null
|
var constructorSymbol: FirConstructorSymbol? = null
|
||||||
provider.getClassUseSiteMemberScope(classId, this@Fir2IrVisitor.session, ScopeSession())!!.processFunctionsByName(
|
provider.getClassUseSiteMemberScope(classId, this@Fir2IrVisitor.session, ScopeSession())!!.processFunctionsByName(
|
||||||
classId.shortClassName
|
classId.shortClassName
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReferenceImpl
|
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructClassType
|
import org.jetbrains.kotlin.fir.resolve.constructClassType
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols
|
import org.jetbrains.kotlin.fir.resolve.getClassDeclaredCallableSymbols
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.service
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||||
@@ -247,7 +248,7 @@ private fun JavaAnnotationArgument.toFirExpression(
|
|||||||
val classId = this@toFirExpression.enumClassId
|
val classId = this@toFirExpression.enumClassId
|
||||||
val entryName = this@toFirExpression.entryName
|
val entryName = this@toFirExpression.entryName
|
||||||
val calleeReference = if (classId != null && entryName != null) {
|
val calleeReference = if (classId != null && entryName != null) {
|
||||||
val callableSymbol = session.service<FirSymbolProvider>().getClassDeclaredCallableSymbols(
|
val callableSymbol = session.firSymbolProvider.getClassDeclaredCallableSymbols(
|
||||||
classId, entryName
|
classId, entryName
|
||||||
).firstOrNull()
|
).firstOrNull()
|
||||||
callableSymbol?.let {
|
callableSymbol?.let {
|
||||||
|
|||||||
+1
-1
@@ -210,7 +210,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
val entryLookupTag = ConeClassLikeLookupTagImpl(entryClassId)
|
val entryLookupTag = ConeClassLikeLookupTagImpl(entryClassId)
|
||||||
val entryClassSymbol = entryLookupTag.toSymbol(this@KotlinDeserializedJvmSymbolsProvider.session)
|
val entryClassSymbol = entryLookupTag.toSymbol(this@KotlinDeserializedJvmSymbolsProvider.session)
|
||||||
val entryCallableSymbol =
|
val entryCallableSymbol =
|
||||||
this@KotlinDeserializedJvmSymbolsProvider.session.service<FirSymbolProvider>().getClassDeclaredCallableSymbols(
|
this@KotlinDeserializedJvmSymbolsProvider.session.firSymbolProvider.getClassDeclaredCallableSymbols(
|
||||||
this@toEnumEntryReferenceExpression, name
|
this@toEnumEntryReferenceExpression, name
|
||||||
).firstOrNull()
|
).firstOrNull()
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.expressions.FirStatement
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedQualifierImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedQualifierImpl
|
||||||
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.PackageOrClass
|
import org.jetbrains.kotlin.fir.resolve.transformers.PackageOrClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.resolveToPackageOrClass
|
import org.jetbrains.kotlin.fir.resolve.transformers.resolveToPackageOrClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.resultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.resultType
|
||||||
@@ -44,7 +44,7 @@ class FirQualifiedNameResolver(components: BodyResolveComponents) : BodyResolveC
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun tryResolveAsQualifier(): FirResolvedQualifier? {
|
fun tryResolveAsQualifier(): FirResolvedQualifier? {
|
||||||
val symbolProvider = session.service<FirSymbolProvider>()
|
val symbolProvider = session.firSymbolProvider
|
||||||
var qualifierParts = qualifierStack.asReversed().map { it.asString() }
|
var qualifierParts = qualifierStack.asReversed().map { it.asString() }
|
||||||
var resolved: PackageOrClass?
|
var resolved: PackageOrClass?
|
||||||
do {
|
do {
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ abstract class FirSymbolProvider : FirSessionComponent {
|
|||||||
fun getSessionForClass(classId: ClassId): FirSession? = getClassLikeSymbolByFqName(classId)?.fir?.session
|
fun getSessionForClass(classId: ClassId): FirSession? = getClassLikeSymbolByFqName(classId)?.fir?.session
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun getInstance(session: FirSession) = session.service<FirSymbolProvider>()
|
fun getInstance(session: FirSession) = session.firSymbolProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ fun createFunctionalType(
|
|||||||
val receiverAndParameterTypes = listOfNotNull(receiverType) + parameters + listOf(rawReturnType)
|
val receiverAndParameterTypes = listOfNotNull(receiverType) + parameters + listOf(rawReturnType)
|
||||||
|
|
||||||
val functionalTypeId = StandardClassIds.byName("Function${receiverAndParameterTypes.size - 1}")
|
val functionalTypeId = StandardClassIds.byName("Function${receiverAndParameterTypes.size - 1}")
|
||||||
val functionalType = functionalTypeId(session.service()).constructType(receiverAndParameterTypes.toTypedArray(), isNullable = false)
|
val functionalType = functionalTypeId(session.firSymbolProvider).constructType(receiverAndParameterTypes.toTypedArray(), isNullable = false)
|
||||||
return functionalType
|
return functionalType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ val DECLARED = scopeSessionKey<FirScope>()
|
|||||||
data class SubstitutionScopeKey<T : FirClassSubstitutionScope>(val type: ConeClassLikeType) : ScopeSessionKey<T>() {}
|
data class SubstitutionScopeKey<T : FirClassSubstitutionScope>(val type: ConeClassLikeType) : ScopeSessionKey<T>() {}
|
||||||
|
|
||||||
fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? {
|
fun FirRegularClass.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope? {
|
||||||
val symbolProvider = useSiteSession.service<FirSymbolProvider>()
|
val symbolProvider = useSiteSession.firSymbolProvider
|
||||||
return symbolProvider.getClassUseSiteMemberScope(this.classId, useSiteSession, builder)
|
return symbolProvider.getClassUseSiteMemberScope(this.classId, useSiteSession, builder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -5,13 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.calls
|
package org.jetbrains.kotlin.fir.resolve.calls
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.AbstractConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.withArguments
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.withNullability
|
|
||||||
import org.jetbrains.kotlin.fir.service
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol
|
||||||
@@ -28,7 +24,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.cast
|
|||||||
interface ConeInferenceContext : TypeSystemInferenceExtensionContext,
|
interface ConeInferenceContext : TypeSystemInferenceExtensionContext,
|
||||||
ConeTypeContext {
|
ConeTypeContext {
|
||||||
|
|
||||||
val symbolProvider: FirSymbolProvider get() = session.service()
|
val symbolProvider: FirSymbolProvider get() = session.firSymbolProvider
|
||||||
|
|
||||||
override val isErrorTypeAllowed: Boolean get() = false
|
override val isErrorTypeAllowed: Boolean get() = false
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -8,9 +8,9 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
||||||
import org.jetbrains.kotlin.fir.renderWithType
|
import org.jetbrains.kotlin.fir.renderWithType
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
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.service
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.invoke
|
import org.jetbrains.kotlin.fir.symbols.invoke
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -71,7 +71,7 @@ internal object CreateFreshTypeVariableSubstitutorStage : ResolutionStage() {
|
|||||||
is FirStarProjection -> csBuilder.addEqualityConstraint(
|
is FirStarProjection -> csBuilder.addEqualityConstraint(
|
||||||
freshVariable.defaultType,
|
freshVariable.defaultType,
|
||||||
typeParameter.bounds.firstOrNull()?.coneTypeUnsafe()
|
typeParameter.bounds.firstOrNull()?.coneTypeUnsafe()
|
||||||
?: StandardClassIds.Any(sink.components.session.service()).constructType(emptyArray(), true),
|
?: StandardClassIds.Any(sink.components.session.firSymbolProvider).constructType(emptyArray(), true),
|
||||||
SimpleConstraintSystemConstraintPosition
|
SimpleConstraintSystemConstraintPosition
|
||||||
)
|
)
|
||||||
else -> assert(typeArgument == FirTypePlaceholderProjection) {
|
else -> assert(typeArgument == FirTypePlaceholderProjection) {
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.invoke
|
import org.jetbrains.kotlin.fir.symbols.invoke
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -117,7 +117,7 @@ private fun extraLambdaInfo(
|
|||||||
?: expectedType?.typeArguments?.singleOrNull()?.safeAs<ConeTypedProjection>()?.type?.takeIf { isFunctionSupertype }
|
?: expectedType?.typeArguments?.singleOrNull()?.safeAs<ConeTypedProjection>()?.type?.takeIf { isFunctionSupertype }
|
||||||
?: typeVariable.defaultType
|
?: typeVariable.defaultType
|
||||||
|
|
||||||
val nothingType = StandardClassIds.Nothing(argument.session.service()).constructType(emptyArray(), false)
|
val nothingType = StandardClassIds.Nothing(argument.session.firSymbolProvider).constructType(emptyArray(), false)
|
||||||
val parameters = argument.valueParameters?.map {
|
val parameters = argument.valueParameters?.map {
|
||||||
it.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: nothingType
|
it.returnTypeRef.coneTypeSafe<ConeKotlinType>() ?: nothingType
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
@@ -156,7 +156,7 @@ private fun extractLambdaParameters(expectedType: ConeKotlinType, argument: FirA
|
|||||||
val parameters = argument.valueParameters
|
val parameters = argument.valueParameters
|
||||||
val expectedParameters = expectedType.valueParameterTypes
|
val expectedParameters = expectedType.valueParameterTypes
|
||||||
|
|
||||||
val nullableAnyType = StandardClassIds.Any(argument.session.service()).constructType(emptyArray(), true)
|
val nullableAnyType = StandardClassIds.Any(argument.session.firSymbolProvider).constructType(emptyArray(), true)
|
||||||
|
|
||||||
if (parameters.isEmpty()) {
|
if (parameters.isEmpty()) {
|
||||||
return expectedParameters.map { it?.type ?: nullableAnyType }
|
return expectedParameters.map { it?.type ?: nullableAnyType }
|
||||||
|
|||||||
+2
-3
@@ -5,11 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.calls
|
package org.jetbrains.kotlin.fir.resolve.calls
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousFunction
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds.Unit
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds.Unit
|
||||||
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
|
||||||
@@ -69,7 +68,7 @@ class PostponedArgumentsAnalyzer(
|
|||||||
lambda: ResolvedLambdaAtom//,
|
lambda: ResolvedLambdaAtom//,
|
||||||
//diagnosticHolder: KotlinDiagnosticsHolder
|
//diagnosticHolder: KotlinDiagnosticsHolder
|
||||||
) {
|
) {
|
||||||
val unitType = Unit(components.session.service()).constructType(emptyArray(), false)
|
val unitType = Unit(components.session.firSymbolProvider).constructType(emptyArray(), false)
|
||||||
val stubsForPostponedVariables = c.bindingStubsForPostponedVariables()
|
val stubsForPostponedVariables = c.bindingStubsForPostponedVariables()
|
||||||
val currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) })
|
val currentSubstitutor = c.buildCurrentSubstitutor(stubsForPostponedVariables.mapKeys { it.key.freshTypeConstructor(c) })
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ fun FirCallableDeclaration<*>.dispatchReceiverValue(session: FirSession): ClassD
|
|||||||
// TODO: this is not true atCall least for inner class constructors
|
// TODO: this is not true atCall least for inner class constructors
|
||||||
if (this is FirConstructor) return null
|
if (this is FirConstructor) return null
|
||||||
val id = this.symbol.callableId.classId ?: return null
|
val id = this.symbol.callableId.classId ?: return null
|
||||||
val symbol = session.service<FirSymbolProvider>().getClassLikeSymbolByFqName(id) as? FirClassSymbol ?: return null
|
val symbol = session.firSymbolProvider.getClassLikeSymbolByFqName(id) as? FirClassSymbol ?: return null
|
||||||
val regularClass = symbol.fir
|
val regularClass = symbol.fir
|
||||||
|
|
||||||
return ClassDispatchReceiverValue(regularClass.symbol)
|
return ClassDispatchReceiverValue(regularClass.symbol)
|
||||||
|
|||||||
+2
-3
@@ -8,10 +8,9 @@ package org.jetbrains.kotlin.fir.resolve.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
|
import org.jetbrains.kotlin.fir.dependenciesWithoutSelf
|
||||||
import org.jetbrains.kotlin.fir.resolve.AbstractFirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.AbstractFirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.service
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
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
|
||||||
@@ -24,7 +23,7 @@ class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSy
|
|||||||
private val dependencyProviders by lazy {
|
private val dependencyProviders by lazy {
|
||||||
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
||||||
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
||||||
session.sessionProvider?.getSession(it)?.service<FirSymbolProvider>()
|
session.sessionProvider?.getSession(it)?.firSymbolProvider
|
||||||
}.toList()
|
}.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -54,7 +54,7 @@ open class FirBodyResolveTransformer(
|
|||||||
final override val noExpectedType = FirImplicitTypeRefImpl(null)
|
final override val noExpectedType = FirImplicitTypeRefImpl(null)
|
||||||
private inline val builtinTypes: BuiltinTypes get() = session.builtinTypes
|
private inline val builtinTypes: BuiltinTypes get() = session.builtinTypes
|
||||||
|
|
||||||
final override val symbolProvider = session.service<FirSymbolProvider>()
|
final override val symbolProvider = session.firSymbolProvider
|
||||||
|
|
||||||
private var packageFqName = FqName.ROOT
|
private var packageFqName = FqName.ROOT
|
||||||
final override lateinit var file: FirFile
|
final override lateinit var file: FirFile
|
||||||
@@ -173,7 +173,7 @@ open class FirBodyResolveTransformer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun transformTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: Any?): CompositeTransformResult<FirStatement> {
|
override fun transformTypeOperatorCall(typeOperatorCall: FirTypeOperatorCall, data: Any?): CompositeTransformResult<FirStatement> {
|
||||||
val symbolProvider = session.service<FirSymbolProvider>()
|
val symbolProvider = session.firSymbolProvider
|
||||||
val resolved = transformExpression(typeOperatorCall, data).single
|
val resolved = transformExpression(typeOperatorCall, data).single
|
||||||
when ((resolved as FirTypeOperatorCall).operation) {
|
when ((resolved as FirTypeOperatorCall).operation) {
|
||||||
FirOperation.IS, FirOperation.NOT_IS -> {
|
FirOperation.IS, FirOperation.NOT_IS -> {
|
||||||
@@ -826,7 +826,7 @@ open class FirBodyResolveTransformer(
|
|||||||
|
|
||||||
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: Any?): CompositeTransformResult<FirStatement> {
|
override fun transformGetClassCall(getClassCall: FirGetClassCall, data: Any?): CompositeTransformResult<FirStatement> {
|
||||||
val transformedGetClassCall = transformExpression(getClassCall, data).single as FirGetClassCall
|
val transformedGetClassCall = transformExpression(getClassCall, data).single as FirGetClassCall
|
||||||
val kClassSymbol = ClassId.fromString("kotlin/reflect/KClass")(session.service())
|
val kClassSymbol = ClassId.fromString("kotlin/reflect/KClass")(session.firSymbolProvider)
|
||||||
|
|
||||||
val typeOfExpression = when (val lhs = transformedGetClassCall.argument) {
|
val typeOfExpression = when (val lhs = transformedGetClassCall.argument) {
|
||||||
is FirResolvedQualifier -> {
|
is FirResolvedQualifier -> {
|
||||||
|
|||||||
@@ -8,13 +8,13 @@ package org.jetbrains.kotlin.fir.types
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||||
import org.jetbrains.kotlin.fir.service
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.invoke
|
import org.jetbrains.kotlin.fir.symbols.invoke
|
||||||
|
|
||||||
|
|
||||||
fun ConeKotlinType.createArrayOf(session: FirSession, nullable: Boolean = false): ConeKotlinType {
|
fun ConeKotlinType.createArrayOf(session: FirSession, nullable: Boolean = false): ConeKotlinType {
|
||||||
val symbolProvider: FirSymbolProvider = session.service()
|
val symbolProvider: FirSymbolProvider = session.firSymbolProvider
|
||||||
if (this is ConeClassType) {
|
if (this is ConeClassType) {
|
||||||
val primitiveArrayId = StandardClassIds.primitiveArrayTypeByElementType[lookupTag.classId]
|
val primitiveArrayId = StandardClassIds.primitiveArrayTypeByElementType[lookupTag.classId]
|
||||||
if (primitiveArrayId != null) {
|
if (primitiveArrayId != null) {
|
||||||
@@ -33,7 +33,7 @@ fun ConeKotlinType.arrayElementType(session: FirSession): ConeKotlinType? {
|
|||||||
return (typeArguments.first() as ConeTypedProjection).type
|
return (typeArguments.first() as ConeTypedProjection).type
|
||||||
val elementType = StandardClassIds.elementTypeByPrimitiveArrayType[classId]
|
val elementType = StandardClassIds.elementTypeByPrimitiveArrayType[classId]
|
||||||
if (elementType != null) {
|
if (elementType != null) {
|
||||||
return elementType.invoke(session.service()).constructType(emptyArray(), isNullable = false)
|
return elementType.invoke(session.firSymbolProvider).constructType(emptyArray(), isNullable = false)
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty
|
|||||||
require(this is ConeKotlinType)
|
require(this is ConeKotlinType)
|
||||||
|
|
||||||
return this.typeArguments.getOrNull(index)
|
return this.typeArguments.getOrNull(index)
|
||||||
?: StandardClassIds.Any(session.service()).constructType(emptyArray(), false) // TODO wtf
|
?: StandardClassIds.Any(session.firSymbolProvider).constructType(emptyArray(), false) // TODO wtf
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun KotlinTypeMarker.asTypeArgument(): TypeArgumentMarker {
|
override fun KotlinTypeMarker.asTypeArgument(): TypeArgumentMarker {
|
||||||
|
|||||||
+2
-6
@@ -28,15 +28,11 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaConstructor
|
|||||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
|
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
|
||||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
|
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
|
||||||
import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope
|
import org.jetbrains.kotlin.fir.java.scopes.JavaClassEnhancementScope
|
||||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.impl.FirCompositeSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.impl.FirCompositeSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirCompositeScope
|
||||||
import org.jetbrains.kotlin.fir.service
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -151,7 +147,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() {
|
|||||||
|
|
||||||
val javaFirDump = StringBuilder().also { builder ->
|
val javaFirDump = StringBuilder().also { builder ->
|
||||||
val renderer = FirRenderer(builder)
|
val renderer = FirRenderer(builder)
|
||||||
val symbolProvider = session.service<FirSymbolProvider>() as FirCompositeSymbolProvider
|
val symbolProvider = session.firSymbolProvider as FirCompositeSymbolProvider
|
||||||
val javaProvider = symbolProvider.providers.filterIsInstance<JavaSymbolProvider>().first()
|
val javaProvider = symbolProvider.providers.filterIsInstance<JavaSymbolProvider>().first()
|
||||||
|
|
||||||
fun processClassWithChildren(psiClass: PsiClass, parentFqName: FqName) {
|
fun processClassWithChildren(psiClass: PsiClass, parentFqName: FqName) {
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ interface FirSessionProvider {
|
|||||||
fun getSession(moduleInfo: ModuleInfo): FirSession?
|
fun getSession(moduleInfo: ModuleInfo): FirSession?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This is very slow, introduce & use componentArrayAccessor instead")
|
||||||
inline fun <reified T : Any> FirSession.service(): T =
|
inline fun <reified T : Any> FirSession.service(): T =
|
||||||
getService(T::class)
|
getService(T::class)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user