[FIR] Remove generic parameter from FirDeclaration
This commit is contained in:
@@ -22,7 +22,7 @@ object FirJavaVisibilityChecker : FirVisibilityChecker() {
|
||||
declarationVisibility: Visibility,
|
||||
symbol: FirBasedSymbol<*>,
|
||||
useSiteFile: FirFile,
|
||||
containingDeclarations: List<FirDeclaration<*>>,
|
||||
containingDeclarations: List<FirDeclaration>,
|
||||
dispatchReceiver: ReceiverValue?,
|
||||
session: FirSession
|
||||
): Boolean {
|
||||
|
||||
@@ -7,24 +7,28 @@ package org.jetbrains.kotlin.fir.java
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isJava
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
|
||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||
import org.jetbrains.kotlin.fir.java.scopes.*
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.scopes.*
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.fir.scopes.scopeForSupertype
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.utils.DFS
|
||||
|
||||
class JavaScopeProvider(
|
||||
val symbolProvider: JavaSymbolProvider
|
||||
) : FirScopeProvider() {
|
||||
override fun getUseSiteMemberScope(
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
useSiteSession: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
): FirTypeScope {
|
||||
@@ -106,7 +110,7 @@ class JavaScopeProvider(
|
||||
}
|
||||
|
||||
override fun getStaticMemberScopeForCallables(
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
useSiteSession: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
): FirScope? {
|
||||
@@ -115,7 +119,7 @@ class JavaScopeProvider(
|
||||
}
|
||||
|
||||
private fun getStaticMemberScopeForCallables(
|
||||
klass: FirClass<*>,
|
||||
klass: FirClass,
|
||||
useSiteSession: FirSession,
|
||||
scopeSession: ScopeSession,
|
||||
visitedClasses: MutableSet<FirRegularClass>
|
||||
@@ -190,7 +194,7 @@ class JavaScopeProvider(
|
||||
return result
|
||||
}
|
||||
|
||||
override fun getNestedClassifierScope(klass: FirClass<*>, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? {
|
||||
override fun getNestedClassifierScope(klass: FirClass, useSiteSession: FirSession, scopeSession: ScopeSession): FirScope? {
|
||||
return lazyNestedClassifierScope(
|
||||
klass.classId,
|
||||
(klass as FirJavaClass).existingNestedClassifierNames,
|
||||
|
||||
@@ -374,7 +374,7 @@ class JavaSymbolProvider(
|
||||
classId: ClassId,
|
||||
javaTypeParameterStack: JavaTypeParameterStack,
|
||||
dispatchReceiver: ConeClassLikeType
|
||||
): FirDeclaration<*> {
|
||||
): FirDeclaration {
|
||||
val fieldName = javaField.name
|
||||
val fieldId = CallableId(classId.packageFqName, classId.relativeClassName, fieldName)
|
||||
val returnType = javaField.type
|
||||
|
||||
@@ -37,7 +37,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
override val annotations: MutableList<FirAnnotationCall>,
|
||||
override var status: FirDeclarationStatus,
|
||||
override val classKind: ClassKind,
|
||||
override val declarations: MutableList<FirDeclaration<*>>,
|
||||
override val declarations: MutableList<FirDeclaration>,
|
||||
override val scopeProvider: FirScopeProvider,
|
||||
override val symbol: FirRegularClassSymbol,
|
||||
override val superTypeRefs: MutableList<FirTypeRef>,
|
||||
@@ -132,7 +132,7 @@ internal class FirJavaClassBuilder : FirRegularClassBuilder(), FirAnnotationCont
|
||||
override var resolvePhase: FirResolvePhase = FirResolvePhase.RAW_FIR
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
override val typeParameters: MutableList<FirTypeParameterRef> = mutableListOf()
|
||||
override val declarations: MutableList<FirDeclaration<*>> = mutableListOf()
|
||||
override val declarations: MutableList<FirDeclaration> = mutableListOf()
|
||||
|
||||
override val superTypeRefs: MutableList<FirTypeRef> = mutableListOf()
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ internal class FirJavaFieldBuilder : FirFieldBuilder() {
|
||||
return FirJavaField(
|
||||
source,
|
||||
moduleData,
|
||||
symbol as FirFieldSymbol,
|
||||
symbol,
|
||||
name,
|
||||
resolvePhase,
|
||||
returnTypeRef,
|
||||
|
||||
+17
-17
@@ -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<FirCallableMemberDeclaration>
|
||||
) {
|
||||
/*
|
||||
* FirSignatureEnhancement may be created with library session which doesn't have single module data,
|
||||
@@ -171,7 +171,7 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private fun enhanceMethod(
|
||||
firMethod: FirFunction<*>,
|
||||
firMethod: FirFunction,
|
||||
methodId: CallableId,
|
||||
name: Name?
|
||||
): FirFunctionSymbol<*> {
|
||||
@@ -304,7 +304,7 @@ class FirSignatureEnhancement(
|
||||
|
||||
private fun enhanceReceiverType(
|
||||
ownerFunction: FirJavaMethod,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration<*>>,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
memberContext: FirJavaEnhancementContext
|
||||
): FirResolvedTypeRef {
|
||||
val signatureParts = ownerFunction.partsForValueParameter(
|
||||
@@ -319,8 +319,8 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private fun enhanceValueParameterType(
|
||||
ownerFunction: FirFunction<*>,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration<*>>,
|
||||
ownerFunction: FirFunction,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
hasReceiver: Boolean,
|
||||
memberContext: FirJavaEnhancementContext,
|
||||
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?,
|
||||
@@ -346,8 +346,8 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private fun enhanceReturnType(
|
||||
owner: FirCallableMemberDeclaration<*>,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration<*>>,
|
||||
owner: FirCallableMemberDeclaration,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
memberContext: FirJavaEnhancementContext,
|
||||
predefinedEnhancementInfo: PredefinedFunctionEnhancementInfo?
|
||||
): FirResolvedTypeRef {
|
||||
@@ -368,37 +368,37 @@ class FirSignatureEnhancement(
|
||||
}
|
||||
|
||||
private sealed class TypeInSignature {
|
||||
abstract fun getTypeRef(member: FirCallableMemberDeclaration<*>): FirTypeRef
|
||||
abstract fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef
|
||||
|
||||
object Return : TypeInSignature() {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration<*>): FirTypeRef = member.returnTypeRef
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration): FirTypeRef = member.returnTypeRef
|
||||
}
|
||||
|
||||
object Receiver : TypeInSignature() {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration<*>): FirTypeRef {
|
||||
override fun getTypeRef(member: FirCallableMemberDeclaration): 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: FirCallableMemberDeclaration): FirTypeRef {
|
||||
if (hasReceiver && member is FirJavaMethod) {
|
||||
return member.valueParameters[index + 1].returnTypeRef
|
||||
}
|
||||
return (member as FirFunction<*>).valueParameters[index].returnTypeRef
|
||||
return (member as FirFunction).valueParameters[index].returnTypeRef
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirFunction<*>.partsForValueParameter(
|
||||
private fun FirFunction.partsForValueParameter(
|
||||
typeQualifierResolver: FirAnnotationTypeQualifierResolver,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration<*>>,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
// 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 FirCallableMemberDeclaration).parts(
|
||||
typeQualifierResolver,
|
||||
overriddenMembers,
|
||||
parameterContainer, false,
|
||||
@@ -409,9 +409,9 @@ class FirSignatureEnhancement(
|
||||
typeInSignature
|
||||
)
|
||||
|
||||
private fun FirCallableMemberDeclaration<*>.parts(
|
||||
private fun FirCallableMemberDeclaration.parts(
|
||||
typeQualifierResolver: FirAnnotationTypeQualifierResolver,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration<*>>,
|
||||
overriddenMembers: List<FirCallableMemberDeclaration>,
|
||||
typeContainer: FirAnnotationContainer?,
|
||||
isCovariant: Boolean,
|
||||
containerContext: FirJavaEnhancementContext,
|
||||
|
||||
+2
-3
@@ -14,7 +14,6 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class JavaClassMembersEnhancementScope(
|
||||
@@ -65,14 +64,14 @@ class JavaClassMembersEnhancementScope(
|
||||
return super.processFunctionsByName(name, processor)
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration<*>.overriddenMembers(name: Name): List<FirCallableMemberDeclaration<*>> {
|
||||
private fun FirCallableMemberDeclaration.overriddenMembers(name: Name): List<FirCallableMemberDeclaration> {
|
||||
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 as FirCallableMemberDeclaration } ?: emptyList()
|
||||
}
|
||||
|
||||
override fun processClassifiersByNameWithSubstitution(name: Name, processor: (FirClassifierSymbol<*>, ConeSubstitutor) -> Unit) {
|
||||
|
||||
+5
-3
@@ -13,7 +13,9 @@ import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.superConeTypes
|
||||
import org.jetbrains.kotlin.fir.java.declarations.*
|
||||
import org.jetbrains.kotlin.fir.java.declarations.FirJavaClass
|
||||
import org.jetbrains.kotlin.fir.java.declarations.buildJavaMethodCopy
|
||||
import org.jetbrains.kotlin.fir.java.declarations.buildJavaValueParameterCopy
|
||||
import org.jetbrains.kotlin.fir.java.toConeKotlinTypeProbablyFlexible
|
||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||
import org.jetbrains.kotlin.fir.scopes.*
|
||||
@@ -385,11 +387,11 @@ class JavaClassUseSiteMemberScope(
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirFunction<*>.computeJvmSignature(): String? {
|
||||
private fun FirFunction.computeJvmSignature(): String? {
|
||||
return computeJvmSignature { it.toConeKotlinTypeProbablyFlexible(session, typeParameterStack) }
|
||||
}
|
||||
|
||||
private fun FirFunction<*>.computeJvmDescriptor(customName: String? = null, includeReturnType: Boolean = false): String {
|
||||
private fun FirFunction.computeJvmDescriptor(customName: String? = null, includeReturnType: Boolean = false): String {
|
||||
return computeJvmDescriptor(customName, includeReturnType) {
|
||||
it.toConeKotlinTypeProbablyFlexible(
|
||||
session,
|
||||
|
||||
@@ -7,7 +7,10 @@ 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.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
import org.jetbrains.kotlin.fir.java.JavaTypeParameterStack
|
||||
@@ -17,9 +20,9 @@ import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractOverrideChecker
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.fir.typeContext
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
class JavaOverrideChecker internal constructor(
|
||||
private val session: FirSession,
|
||||
@@ -98,7 +101,7 @@ class JavaOverrideChecker internal constructor(
|
||||
argument is ConeKotlinTypeProjection && argument.type.isTypeParameterDependent()
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration<*>.isTypeParameterDependent(): Boolean =
|
||||
private fun FirCallableMemberDeclaration.isTypeParameterDependent(): Boolean =
|
||||
typeParameters.isNotEmpty() || returnTypeRef.isTypeParameterDependent() ||
|
||||
receiverTypeRef.isTypeParameterDependent() ||
|
||||
this is FirSimpleFunction && valueParameters.any { it.returnTypeRef.isTypeParameterDependent() }
|
||||
@@ -124,7 +127,7 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun FirCallableMemberDeclaration<*>.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) {
|
||||
private fun FirCallableMemberDeclaration.extractTypeParametersTo(result: MutableCollection<FirTypeParameterRef>) {
|
||||
result += typeParameters
|
||||
returnTypeRef.extractTypeParametersTo(result)
|
||||
receiverTypeRef?.extractTypeParametersTo(result)
|
||||
@@ -134,8 +137,8 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
|
||||
override fun buildTypeParametersSubstitutorIfCompatible(
|
||||
overrideCandidate: FirCallableMemberDeclaration<*>,
|
||||
baseDeclaration: FirCallableMemberDeclaration<*>
|
||||
overrideCandidate: FirCallableMemberDeclaration,
|
||||
baseDeclaration: FirCallableMemberDeclaration
|
||||
): ConeSubstitutor {
|
||||
if (!overrideCandidate.isTypeParameterDependent() && !baseDeclaration.isTypeParameterDependent()) {
|
||||
return ConeSubstitutor.Empty
|
||||
@@ -159,7 +162,7 @@ class JavaOverrideChecker internal constructor(
|
||||
}
|
||||
}
|
||||
|
||||
override fun isOverriddenProperty(overrideCandidate: FirCallableMemberDeclaration<*>, baseDeclaration: FirProperty): Boolean {
|
||||
override fun isOverriddenProperty(overrideCandidate: FirCallableMemberDeclaration, baseDeclaration: FirProperty): Boolean {
|
||||
if (baseDeclaration.modality == Modality.FINAL) return false
|
||||
val receiverTypeRef = baseDeclaration.receiverTypeRef
|
||||
return when (overrideCandidate) {
|
||||
|
||||
Reference in New Issue
Block a user