[FIR] Unity FirCallableDeclaration and FirCallableMemberDeclaration
After removal of all diamonds in FirDeclaration hierarchy FirCallableMemberDeclaration was only one inheritor of FirCallableDeclaration, so there is no need to keep them both
This commit is contained in:
committed by
teamcityserver
parent
adc45fd3dd
commit
51fc2e453f
+13
-13
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
class FirSignatureEnhancement(
|
||||
private val owner: FirRegularClass,
|
||||
private val session: FirSession,
|
||||
private val overridden: FirSimpleFunction.() -> List<FirCallableMemberDeclaration>
|
||||
private val overridden: FirSimpleFunction.() -> List<FirCallableDeclaration>
|
||||
) {
|
||||
/*
|
||||
* FirSignatureEnhancement may be created with library session which doesn't have single module data,
|
||||
@@ -306,7 +306,7 @@ class FirSignatureEnhancement(
|
||||
|
||||
private fun enhanceReceiverType(
|
||||
ownerFunction: FirJavaMethod,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
overriddenMembers: List<FirCallableDeclaration>,
|
||||
memberContext: FirJavaEnhancementContext
|
||||
): FirResolvedTypeRef {
|
||||
val signatureParts = ownerFunction.partsForValueParameter(
|
||||
@@ -322,7 +322,7 @@ class FirSignatureEnhancement(
|
||||
|
||||
private fun enhanceValueParameterType(
|
||||
ownerFunction: FirFunction,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
overriddenMembers: List<FirCallableDeclaration>,
|
||||
hasReceiver: Boolean,
|
||||
memberContext: FirJavaEnhancementContext,
|
||||
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?,
|
||||
@@ -348,8 +348,8 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private fun enhanceReturnType(
|
||||
owner: FirCallableMemberDeclaration,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
owner: FirCallableDeclaration,
|
||||
overriddenMembers: List<FirCallableDeclaration>,
|
||||
memberContext: FirJavaEnhancementContext,
|
||||
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?
|
||||
): FirResolvedTypeRef {
|
||||
@@ -370,21 +370,21 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private sealed class TypeInSignature {
|
||||
abstract fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef
|
||||
abstract fun getTypeRef(member: FirCallableDeclaration): FirTypeRef
|
||||
|
||||
object Return : TypeInSignature() {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef = member.returnTypeRef
|
||||
override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef = member.returnTypeRef
|
||||
}
|
||||
|
||||
object Receiver : TypeInSignature() {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef {
|
||||
override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef {
|
||||
if (member is FirJavaMethod) return member.valueParameters[0].returnTypeRef
|
||||
return member.receiverTypeRef!!
|
||||
}
|
||||
}
|
||||
|
||||
class ValueParameter(val hasReceiver: Boolean, val index: Int) : TypeInSignature() {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef {
|
||||
override fun getTypeRef(member: FirCallableDeclaration): FirTypeRef {
|
||||
if (hasReceiver && member is FirJavaMethod) {
|
||||
return member.valueParameters[index + 1].returnTypeRef
|
||||
}
|
||||
@@ -395,12 +395,12 @@ class FirSignatureEnhancement(
|
||||
|
||||
private fun FirFunction.partsForValueParameter(
|
||||
typeQualifierResolver: FirAnnotationTypeQualifierResolver,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
overriddenMembers: List<FirCallableDeclaration>,
|
||||
// TODO: investigate if it's really can be a null (check properties' with extension overrides in Java)
|
||||
parameterContainer: FirAnnotationContainer?,
|
||||
methodContext: FirJavaEnhancementContext,
|
||||
typeInSignature: TypeInSignature
|
||||
): EnhancementSignatureParts = (this as FirCallableMemberDeclaration).parts(
|
||||
): EnhancementSignatureParts = (this as FirCallableDeclaration).parts(
|
||||
typeQualifierResolver,
|
||||
overriddenMembers,
|
||||
parameterContainer, false,
|
||||
@@ -411,9 +411,9 @@ class FirSignatureEnhancement(
|
||||
typeInSignature
|
||||
)
|
||||
|
||||
private fun FirCallableMemberDeclaration.parts(
|
||||
private fun FirCallableDeclaration.parts(
|
||||
typeQualifierResolver: FirAnnotationTypeQualifierResolver,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
overriddenMembers: List<FirCallableDeclaration>,
|
||||
typeContainer: FirAnnotationContainer?,
|
||||
isCovariant: Boolean,
|
||||
containerContext: FirJavaEnhancementContext,
|
||||
|
||||
+3
-3
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.java.scopes
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.java.enhancement.FirSignatureEnhancement
|
||||
@@ -64,14 +64,14 @@ class JavaClassMembersEnhancementScope(
|
||||
return super.processFunctionsByName(name, processor)
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration.overriddenMembers(name: Name): List<FirCallableMemberDeclaration> {
|
||||
private fun FirCallableDeclaration.overriddenMembers(name: Name): List<FirCallableDeclaration> {
|
||||
val backMap = overrideBindCache.getOrPut(name) {
|
||||
useSiteMemberScope
|
||||
.overrideByBase
|
||||
.toList()
|
||||
.groupBy({ (_, key) -> key }, { (value) -> value })
|
||||
}
|
||||
return backMap[this.symbol]?.map { it.fir as FirCallableMemberDeclaration } ?: emptyList()
|
||||
return backMap[this.symbol]?.map { it.fir } ?: emptyList()
|
||||
}
|
||||
|
||||
override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) {
|
||||
|
||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.java.scopes
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
@@ -101,7 +101,7 @@ class JavaOverrideChecker internal constructor(
|
||||
argument is ConeKotlinTypeProjection && argument.type.isTypeParameterDependent()
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration.isTypeParameterDependent(): Boolean =
|
||||
private fun FirCallableDeclaration.isTypeParameterDependent(): Boolean =
|
||||
typeParameters.isNotEmpty() || returnTypeRef.isTypeParameterDependent() ||
|
||||
receiverTypeRef.isTypeParameterDependent() ||
|
||||
this is FirSimpleFunction && valueParameters.any { it.returnTypeRef.isTypeParameterDependent() }
|
||||
@@ -127,7 +127,7 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) {
|
||||
private fun FirCallableDeclaration.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) {
|
||||
result += typeParameters
|
||||
returnTypeRef.extractTypeParametersTo(result)
|
||||
receiverTypeRef?.extractTypeParametersTo(result)
|
||||
@@ -137,8 +137,8 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
|
||||
override fun buildTypeParametersSubstitutorIfCompatible(
|
||||
overrideCandidate: FirCallableMemberDeclaration,
|
||||
baseDeclaration: FirCallableMemberDeclaration
|
||||
overrideCandidate: FirCallableDeclaration,
|
||||
baseDeclaration: FirCallableDeclaration
|
||||
): ConeSubstitutor {
|
||||
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
||||
return ConeSubstitutor.Empty
|
||||
@@ -162,7 +162,7 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun isOverriddenProperty(overrideCandidate: FirCallableMemberDeclaration, baseDeclaration: FirProperty): Boolean {
|
||||
override fun isOverriddenProperty(overrideCandidate: FirCallableDeclaration, baseDeclaration: FirProperty): Boolean {
|
||||
if (baseDeclaration.modality == Modality.FINAL) return false
|
||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||
return when (overrideCandidate) {
|
||||
|
||||
Reference in New Issue
Block a user