[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:
Dmitriy Novozhilov
2021-07-12 11:11:29 +03:00
committed by teamcityserver
parent adc45fd3dd
commit 51fc2e453f
103 changed files with 403 additions and 516 deletions
@@ -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,
@@ -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) {