Remove some FirElement.session usages in FIR resolve
This commit is contained in:
@@ -46,7 +46,7 @@ private fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession)
|
||||
val symbol = useSiteSuperType.lookupTag.toSymbol(useSiteSession)
|
||||
if (symbol is FirClassSymbol) {
|
||||
val useSiteScope = symbol.fir.buildUseSiteScope(useSiteSession)
|
||||
useSiteSuperType.buildSubstitutionScope(useSiteScope, symbol.fir) ?: useSiteScope
|
||||
useSiteSuperType.buildSubstitutionScope(useSiteSession, useSiteScope, symbol.fir) ?: useSiteScope
|
||||
} else {
|
||||
null
|
||||
}
|
||||
@@ -55,6 +55,7 @@ private fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession)
|
||||
}
|
||||
|
||||
private fun ConeClassLikeType.buildSubstitutionScope(
|
||||
session: FirSession,
|
||||
useSiteScope: FirScope,
|
||||
regularClass: FirRegularClass
|
||||
): FirClassSubstitutionScope? {
|
||||
@@ -65,7 +66,7 @@ private fun ConeClassLikeType.buildSubstitutionScope(
|
||||
typeParameter.symbol to (typeArgument as? ConeTypedProjection)?.type
|
||||
}.filter { (_, type) -> type != null }.toMap() as Map<ConeTypeParameterSymbol, ConeKotlinType>
|
||||
|
||||
return FirClassSubstitutionScope(useSiteScope, substitution)
|
||||
return FirClassSubstitutionScope(session, useSiteScope, substitution)
|
||||
}
|
||||
|
||||
private tailrec fun ConeClassLikeType.computePartialExpansion(useSiteSession: FirSession): ConeClassLikeType? {
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ class FirLibrarySymbolProviderImpl(val session: FirSession) : FirSymbolProvider
|
||||
|
||||
superTypesDeserialized.mapNotNullTo(superTypeRefs) {
|
||||
if (it == null) return@mapNotNullTo null
|
||||
FirResolvedTypeRefImpl(session, null, it, false, emptyList())
|
||||
FirResolvedTypeRefImpl(this@BuiltInsPackageFragment.session, null, it, false, emptyList())
|
||||
}
|
||||
// TODO: declarations (probably should be done later)
|
||||
}
|
||||
|
||||
+4
-4
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.*
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
class FirTypeResolverImpl(session: FirSession) : FirTypeResolver {
|
||||
class FirTypeResolverImpl(private val session: FirSession) : FirTypeResolver {
|
||||
|
||||
private val symbolProvider by lazy {
|
||||
session.getService(FirSymbolProvider::class)
|
||||
@@ -48,7 +48,7 @@ class FirTypeResolverImpl(session: FirSession) : FirTypeResolver {
|
||||
is FirResolvedTypeRef -> typeRef.coneTypeSafe<ConeLookupTagBasedType>()?.lookupTag?.let(symbolProvider::getSymbolByLookupTag)
|
||||
is FirUserTypeRef -> {
|
||||
|
||||
val qualifierResolver = FirQualifierResolver.getInstance(typeRef.session)
|
||||
val qualifierResolver = FirQualifierResolver.getInstance(session)
|
||||
|
||||
var resolvedSymbol: ConeClassifierSymbol? = null
|
||||
scope.processClassifiersByName(typeRef.qualifier.first().name, position) { symbol ->
|
||||
@@ -73,7 +73,7 @@ class FirTypeResolverImpl(session: FirSession) : FirTypeResolver {
|
||||
resolvedSymbol ?: qualifierResolver.resolveSymbol(typeRef.qualifier)
|
||||
}
|
||||
is FirImplicitBuiltinTypeRef -> {
|
||||
resolveBuiltInQualified(typeRef.id, typeRef.session)
|
||||
resolveBuiltInQualified(typeRef.id, session)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
@@ -102,7 +102,7 @@ class FirTypeResolverImpl(session: FirSession) : FirTypeResolver {
|
||||
(typeRef.receiverTypeRef as FirResolvedTypeRef?)?.type,
|
||||
typeRef.valueParameters.map { it.returnTypeRef.coneTypeUnsafe() },
|
||||
typeRef.returnTypeRef.coneTypeUnsafe(),
|
||||
resolveBuiltInQualified(KotlinBuiltIns.getFunctionClassId(typeRef.parametersCount), typeRef.session).toLookupTag(),
|
||||
resolveBuiltInQualified(KotlinBuiltIns.getFunctionClassId(typeRef.parametersCount), session).toLookupTag(),
|
||||
typeRef.isMarkedNullable
|
||||
)
|
||||
}
|
||||
|
||||
+4
-2
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.scopes.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirNamedFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirMemberFunctionImpl
|
||||
@@ -20,6 +21,7 @@ import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class FirClassSubstitutionScope(
|
||||
private val session: FirSession,
|
||||
private val useSiteScope: FirScope,
|
||||
private val substitution: Map<ConeTypeParameterSymbol, ConeKotlinType>
|
||||
) : FirScope {
|
||||
@@ -114,7 +116,7 @@ class FirClassSubstitutionScope(
|
||||
// TODO: consider using here some light-weight functions instead of pseudo-real FirMemberFunctionImpl
|
||||
// As second alternative, we can invent some light-weight kind of FirRegularClass
|
||||
FirMemberFunctionImpl(
|
||||
session,
|
||||
this@FirClassSubstitutionScope.session,
|
||||
psi,
|
||||
symbol,
|
||||
name,
|
||||
@@ -125,7 +127,7 @@ class FirClassSubstitutionScope(
|
||||
valueParameters += member.valueParameters.zip(newParameterTypes) { valueParameter, newType ->
|
||||
with(valueParameter) {
|
||||
FirValueParameterImpl(
|
||||
session, psi,
|
||||
this@FirClassSubstitutionScope.session, psi,
|
||||
name, this.returnTypeRef.withReplacedConeType(newType),
|
||||
defaultValue, isCrossinline, isNoinline, isVararg
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user