[FIR] Minor: rename firSession to session
This commit is contained in:
committed by
TeamCityServer
parent
c8bd6d3203
commit
9a8ad059d5
@@ -45,16 +45,16 @@ abstract class FirSamResolver {
|
|||||||
val SAM_PARAMETER_NAME = Name.identifier("block")
|
val SAM_PARAMETER_NAME = Name.identifier("block")
|
||||||
|
|
||||||
class FirSamResolverImpl(
|
class FirSamResolverImpl(
|
||||||
private val firSession: FirSession,
|
private val session: FirSession,
|
||||||
private val scopeSession: ScopeSession,
|
private val scopeSession: ScopeSession,
|
||||||
private val outerClassManager: FirOuterClassManager? = null,
|
private val outerClassManager: FirOuterClassManager? = null,
|
||||||
) : FirSamResolver() {
|
) : FirSamResolver() {
|
||||||
private val resolvedFunctionType: NullableMap<FirRegularClass, ConeLookupTagBasedType?> = NullableMap()
|
private val resolvedFunctionType: NullableMap<FirRegularClass, ConeLookupTagBasedType?> = NullableMap()
|
||||||
private val samConstructorsCache = firSession.fakeOverrideStorage.samConstructorCache
|
private val samConstructorsCache = session.fakeOverrideStorage.samConstructorCache
|
||||||
|
|
||||||
override fun getFunctionTypeForPossibleSamType(type: ConeKotlinType): ConeKotlinType? {
|
override fun getFunctionTypeForPossibleSamType(type: ConeKotlinType): ConeKotlinType? {
|
||||||
return when (type) {
|
return when (type) {
|
||||||
is ConeClassLikeType -> getFunctionTypeForPossibleSamType(type.fullyExpandedType(firSession))
|
is ConeClassLikeType -> getFunctionTypeForPossibleSamType(type.fullyExpandedType(session))
|
||||||
is ConeFlexibleType -> ConeFlexibleType(
|
is ConeFlexibleType -> ConeFlexibleType(
|
||||||
getFunctionTypeForPossibleSamType(type.lowerBound) ?: return null,
|
getFunctionTypeForPossibleSamType(type.lowerBound) ?: return null,
|
||||||
getFunctionTypeForPossibleSamType(type.upperBound) ?: return null,
|
getFunctionTypeForPossibleSamType(type.upperBound) ?: return null,
|
||||||
@@ -71,12 +71,12 @@ class FirSamResolverImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getFunctionTypeForPossibleSamType(type: ConeClassLikeType): ConeLookupTagBasedType? {
|
private fun getFunctionTypeForPossibleSamType(type: ConeClassLikeType): ConeLookupTagBasedType? {
|
||||||
val firRegularClass = type.lookupTag.toFirRegularClass(firSession) ?: return null
|
val firRegularClass = type.lookupTag.toFirRegularClass(session) ?: return null
|
||||||
|
|
||||||
val unsubstitutedFunctionType = resolveFunctionTypeIfSamInterface(firRegularClass) ?: return null
|
val unsubstitutedFunctionType = resolveFunctionTypeIfSamInterface(firRegularClass) ?: return null
|
||||||
|
|
||||||
if (firRegularClass.typeParameters.isEmpty()) {
|
if (firRegularClass.typeParameters.isEmpty()) {
|
||||||
return unsubstitutedFunctionType.withNullability(ConeNullability.create(type.isMarkedNullable), firSession.typeContext)
|
return unsubstitutedFunctionType.withNullability(ConeNullability.create(type.isMarkedNullable), session.typeContext)
|
||||||
}
|
}
|
||||||
|
|
||||||
val substitutor =
|
val substitutor =
|
||||||
@@ -90,18 +90,18 @@ class FirSamResolverImpl(
|
|||||||
(projection as? ConeKotlinTypeProjection)?.type
|
(projection as? ConeKotlinTypeProjection)?.type
|
||||||
// TODO: Consider using `parameterSymbol.fir.bounds.first().coneType` once sure that it won't fail with exception
|
// TODO: Consider using `parameterSymbol.fir.bounds.first().coneType` once sure that it won't fail with exception
|
||||||
?: parameterSymbol.fir.bounds.firstOrNull()?.coneTypeSafe()
|
?: parameterSymbol.fir.bounds.firstOrNull()?.coneTypeSafe()
|
||||||
?: firSession.builtinTypes.nullableAnyType.type
|
?: session.builtinTypes.nullableAnyType.type
|
||||||
|
|
||||||
Pair(parameterSymbol, typeArgument)
|
Pair(parameterSymbol, typeArgument)
|
||||||
}
|
}
|
||||||
.toMap(),
|
.toMap(),
|
||||||
firSession
|
session
|
||||||
)
|
)
|
||||||
|
|
||||||
val result =
|
val result =
|
||||||
substitutor
|
substitutor
|
||||||
.substituteOrSelf(unsubstitutedFunctionType)
|
.substituteOrSelf(unsubstitutedFunctionType)
|
||||||
.withNullability(ConeNullability.create(type.isMarkedNullable), firSession.typeContext)
|
.withNullability(ConeNullability.create(type.isMarkedNullable), session.typeContext)
|
||||||
|
|
||||||
require(result is ConeLookupTagBasedType) {
|
require(result is ConeLookupTagBasedType) {
|
||||||
"Function type should always be ConeLookupTagBasedType, but ${result::class} was found"
|
"Function type should always be ConeLookupTagBasedType, but ${result::class} was found"
|
||||||
@@ -131,7 +131,7 @@ class FirSamResolverImpl(
|
|||||||
val declaredTypeParameter = typeParameter.symbol.fir // TODO: or really declared?
|
val declaredTypeParameter = typeParameter.symbol.fir // TODO: or really declared?
|
||||||
FirTypeParameterBuilder().apply {
|
FirTypeParameterBuilder().apply {
|
||||||
source = declaredTypeParameter.source
|
source = declaredTypeParameter.source
|
||||||
moduleData = firSession.moduleData
|
moduleData = session.moduleData
|
||||||
origin = FirDeclarationOrigin.SamConstructor
|
origin = FirDeclarationOrigin.SamConstructor
|
||||||
resolvePhase = FirResolvePhase.DECLARATIONS
|
resolvePhase = FirResolvePhase.DECLARATIONS
|
||||||
name = declaredTypeParameter.name
|
name = declaredTypeParameter.name
|
||||||
@@ -150,7 +150,7 @@ class FirSamResolverImpl(
|
|||||||
firRegularClass.typeParameters
|
firRegularClass.typeParameters
|
||||||
.map { it.symbol }
|
.map { it.symbol }
|
||||||
.zip(newTypeParameterTypes).toMap(),
|
.zip(newTypeParameterTypes).toMap(),
|
||||||
firSession
|
session
|
||||||
)
|
)
|
||||||
|
|
||||||
for ((newTypeParameter, oldTypeParameter) in newTypeParameters.zip(firRegularClass.typeParameters)) {
|
for ((newTypeParameter, oldTypeParameter) in newTypeParameters.zip(firRegularClass.typeParameters)) {
|
||||||
@@ -164,7 +164,7 @@ class FirSamResolverImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return buildSimpleFunction {
|
return buildSimpleFunction {
|
||||||
moduleData = firSession.moduleData
|
moduleData = session.moduleData
|
||||||
source = firRegularClass.source
|
source = firRegularClass.source
|
||||||
name = classId.shortClassName
|
name = classId.shortClassName
|
||||||
origin = FirDeclarationOrigin.SamConstructor
|
origin = FirDeclarationOrigin.SamConstructor
|
||||||
@@ -199,7 +199,7 @@ class FirSamResolverImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
valueParameters += buildValueParameter {
|
valueParameters += buildValueParameter {
|
||||||
moduleData = firSession.moduleData
|
moduleData = session.moduleData
|
||||||
origin = FirDeclarationOrigin.SamConstructor
|
origin = FirDeclarationOrigin.SamConstructor
|
||||||
returnTypeRef = buildResolvedTypeRef {
|
returnTypeRef = buildResolvedTypeRef {
|
||||||
source = firRegularClass.source
|
source = firRegularClass.source
|
||||||
@@ -221,7 +221,7 @@ class FirSamResolverImpl(
|
|||||||
private fun resolveFunctionTypeIfSamInterface(firRegularClass: FirRegularClass): ConeLookupTagBasedType? {
|
private fun resolveFunctionTypeIfSamInterface(firRegularClass: FirRegularClass): ConeLookupTagBasedType? {
|
||||||
return resolvedFunctionType.getOrPut(firRegularClass) {
|
return resolvedFunctionType.getOrPut(firRegularClass) {
|
||||||
if (!firRegularClass.status.isFun) return@getOrPut null
|
if (!firRegularClass.status.isFun) return@getOrPut null
|
||||||
val abstractMethod = firRegularClass.getSingleAbstractMethodOrNull(firSession, scopeSession) ?: return@getOrPut null
|
val abstractMethod = firRegularClass.getSingleAbstractMethodOrNull(session, scopeSession) ?: return@getOrPut null
|
||||||
// TODO: val shouldConvertFirstParameterToDescriptor = samWithReceiverResolvers.any { it.shouldConvertFirstSamParameterToReceiver(abstractMethod) }
|
// TODO: val shouldConvertFirstParameterToDescriptor = samWithReceiverResolvers.any { it.shouldConvertFirstSamParameterToReceiver(abstractMethod) }
|
||||||
|
|
||||||
abstractMethod.getFunctionTypeForAbstractMethod()
|
abstractMethod.getFunctionTypeForAbstractMethod()
|
||||||
|
|||||||
Reference in New Issue
Block a user