[FIR] Rename containingClass function to containingClassLookupTag
Since this function returns lookup tag instead of FirClass or symbol the old name may lead to misunderstanding
This commit is contained in:
committed by
Space Team
parent
be3f8e7eb0
commit
8fbb605034
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.llFirMo
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtBuiltinsModule
|
||||
import org.jetbrains.kotlin.analysis.providers.createDeclarationProvider
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.unwrapFakeOverrides
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -125,7 +125,7 @@ internal object FirDeserializedDeclarationSourceProvider {
|
||||
}
|
||||
|
||||
private fun FirCallableDeclaration.containingKtClass(project: Project): KtClassOrObject? =
|
||||
unwrapFakeOverrides().containingClass()?.classId?.let { classByClassId(it, scope(project), project) }
|
||||
unwrapFakeOverrides().containingClassLookupTag()?.classId?.let { classByClassId(it, scope(project), project) }
|
||||
|
||||
private fun classByClassId(classId: ClassId, scope: GlobalSearchScope, project: Project): KtClassOrObject? {
|
||||
val correctedClassId = classIdMapping[classId] ?: classId
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analysis.api.fir.renderer
|
||||
import org.jetbrains.kotlin.analysis.api.components.KtTypeRendererOptions
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.tryCollectDesignation
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.containingClassForLocal
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
||||
@@ -213,7 +213,7 @@ internal class ConeTypeIdeRenderer(
|
||||
private fun collectDesignationPathForLocal(declaration: FirDeclaration): List<FirDeclaration>? {
|
||||
@OptIn(LookupTagInternals::class)
|
||||
val containingClass = when (declaration) {
|
||||
is FirCallableDeclaration -> declaration.containingClass()?.toFirRegularClass(declaration.moduleData.session)
|
||||
is FirCallableDeclaration -> declaration.containingClassLookupTag()?.toFirRegularClass(declaration.moduleData.session)
|
||||
is FirAnonymousObject -> return listOf(declaration)
|
||||
is FirClassLikeDeclaration -> declaration.let {
|
||||
if (!declaration.isLocal) return null
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.classKind
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||
@@ -76,7 +76,7 @@ internal abstract class FirIdeRendererBase(
|
||||
}
|
||||
|
||||
private fun PrettyPrinter.renderVisibility(declaration: FirMemberDeclaration) {
|
||||
if (declaration is FirConstructor && declaration.containingClass()?.toFirRegularClassSymbol(useSiteSession)?.isEnumClass == true) {
|
||||
if (declaration is FirConstructor && declaration.containingClassLookupTag()?.toFirRegularClassSymbol(useSiteSession)?.isEnumClass == true) {
|
||||
return
|
||||
}
|
||||
val visibility = declaration.visibility
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||
@@ -52,7 +52,7 @@ internal class KtFirConstructorSymbol(
|
||||
override val annotationsList by cached { KtFirAnnotationListForDeclaration.create(firSymbol, firResolveSession.useSiteFirSession, token) }
|
||||
|
||||
override val containingClassIdIfNonLocal: ClassId?
|
||||
get() = withValidityAssertion { firSymbol.containingClass()?.classId?.takeUnless { it.isLocal } }
|
||||
get() = withValidityAssertion { firSymbol.containingClassLookupTag()?.classId?.takeUnless { it.isLocal } }
|
||||
|
||||
override val isPrimary: Boolean get() = withValidityAssertion { firSymbol.isPrimary }
|
||||
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.analysis.api.types.KtType
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirEnumEntrySymbol
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -47,7 +47,7 @@ internal class KtFirEnumEntrySymbol(
|
||||
override fun createPointer(): KtSymbolPointer<KtEnumEntrySymbol> = withValidityAssertion {
|
||||
KtPsiBasedSymbolPointer.createForSymbolFromSource(this)?.let { return it }
|
||||
return KtFirEnumEntrySymbolPointer(
|
||||
firSymbol.containingClass()?.classId ?: error("Containing class should present for enum entry"),
|
||||
firSymbol.containingClassLookupTag()?.classId ?: error("Containing class should present for enum entry"),
|
||||
firSymbol.name
|
||||
)
|
||||
}
|
||||
|
||||
+3
-3
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.resolve.getHasStableParameterNames
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
@@ -76,7 +76,7 @@ internal class KtFirFunctionSymbol(
|
||||
get() = withValidityAssertion {
|
||||
when {
|
||||
firSymbol.isLocal -> KtSymbolKind.LOCAL
|
||||
firSymbol.containingClass()?.classId == null -> KtSymbolKind.TOP_LEVEL
|
||||
firSymbol.containingClassLookupTag()?.classId == null -> KtSymbolKind.TOP_LEVEL
|
||||
else -> KtSymbolKind.CLASS_MEMBER
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,7 @@ internal class KtFirFunctionSymbol(
|
||||
|
||||
KtSymbolKind.CLASS_MEMBER ->
|
||||
KtFirMemberFunctionSymbolPointer(
|
||||
firSymbol.containingClass()?.classId ?: error("ClassId should not be null for member function"),
|
||||
firSymbol.containingClassLookupTag()?.classId ?: error("ClassId should not be null for member function"),
|
||||
firSymbol.name,
|
||||
firSymbol.createSignature()
|
||||
)
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modalityOrFinal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.visibility
|
||||
@@ -53,7 +53,7 @@ internal class KtFirJavaFieldSymbol(
|
||||
override val isStatic: Boolean get() = withValidityAssertion { firSymbol.isStatic }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtJavaFieldSymbol> = withValidityAssertion {
|
||||
val containingClassId = firSymbol.containingClass()?.classId
|
||||
val containingClassId = firSymbol.containingClassLookupTag()?.classId
|
||||
?: error("Cannot find parent class for java field $callableIdIfNonLocal")
|
||||
|
||||
return KtFirJavaFieldSymbolPointer(containingClassId, name)
|
||||
|
||||
+3
-3
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
@@ -71,7 +71,7 @@ internal class KtFirKotlinPropertySymbol(
|
||||
|
||||
override val symbolKind: KtSymbolKind
|
||||
get() = withValidityAssertion {
|
||||
when (firSymbol.containingClass()?.classId) {
|
||||
when (firSymbol.containingClassLookupTag()?.classId) {
|
||||
null -> KtSymbolKind.TOP_LEVEL
|
||||
else -> KtSymbolKind.CLASS_MEMBER
|
||||
}
|
||||
@@ -124,7 +124,7 @@ internal class KtFirKotlinPropertySymbol(
|
||||
KtSymbolKind.TOP_LEVEL -> TODO("Creating symbol for top level properties is not supported yet")
|
||||
KtSymbolKind.CLASS_MEMBER ->
|
||||
KtFirMemberPropertySymbolPointer(
|
||||
firSymbol.containingClass()?.classId ?: error("ClassId should not be null for member property"),
|
||||
firSymbol.containingClassLookupTag()?.classId ?: error("ClassId should not be null for member property"),
|
||||
firSymbol.name,
|
||||
firSymbol.createSignature()
|
||||
)
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtClassOrObjectSymbol
|
||||
import org.jetbrains.kotlin.analysis.api.lifetime.KtLifetimeToken
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getImplementationStatus
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.isVisibleInClass
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
@@ -66,7 +66,7 @@ internal class KtFirOverrideInfoProvider(
|
||||
symbol.firSymbol.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
val firDeclaration = symbol.firSymbol.fir as FirCallableDeclaration
|
||||
val containingClass =
|
||||
getOriginalOverriddenSymbol(firDeclaration)?.containingClass()?.toSymbol(rootModuleSession) ?: return null
|
||||
getOriginalOverriddenSymbol(firDeclaration)?.containingClassLookupTag()?.toSymbol(rootModuleSession) ?: return null
|
||||
return analysisSession.firSymbolBuilder.classifierBuilder.buildClassLikeSymbol(containingClass.fir.symbol) as? KtClassOrObjectSymbol
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.LLFirResolveSession
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isOverride
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isStatic
|
||||
@@ -89,7 +89,7 @@ internal class KtFirSyntheticJavaPropertySymbol(
|
||||
override val origin: KtSymbolOrigin get() = withValidityAssertion { KtSymbolOrigin.JAVA_SYNTHETIC_PROPERTY }
|
||||
|
||||
override fun createPointer(): KtSymbolPointer<KtSyntheticJavaPropertySymbol> = withValidityAssertion {
|
||||
val containingClassId = firSymbol.containingClass()?.classId
|
||||
val containingClassId = firSymbol.containingClassLookupTag()?.classId
|
||||
?: error("Cannot find parent class for synthetic java property $callableIdIfNonLocal")
|
||||
|
||||
return KtFirJavaSyntheticPropertySymbolPointer(containingClassId, name)
|
||||
|
||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.withFirEntry
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||
@@ -64,7 +64,7 @@ private fun collectDesignationPath(declaration: FirDeclaration): List<FirDeclara
|
||||
if ((declaration as? FirCallableDeclaration)?.status?.visibility == Visibilities.Local) return null
|
||||
when (declaration) {
|
||||
is FirSimpleFunction, is FirProperty, is FirField, is FirConstructor, is FirEnumEntry -> {
|
||||
val klass = declaration.containingClass() ?: return emptyList()
|
||||
val klass = declaration.containingClassLookupTag() ?: return emptyList()
|
||||
if (klass.classId.isLocal) return null
|
||||
klass.toFirRegularClassFromSameSession(declaration.moduleData.session)
|
||||
}
|
||||
|
||||
+3
-3
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.fir.analysis.FirOverridesBackwardCompatibilityHelper
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
@@ -71,14 +71,14 @@ object FirJvmOverridesBackwardCompatibilityHelper : FirOverridesBackwardCompatib
|
||||
}
|
||||
|
||||
if (!originalMember.isJavaOrEnhancement) return false
|
||||
val containingClassName = originalMember.containingClass()?.classId?.asSingleFqName()?.toUnsafe() ?: return false
|
||||
val containingClassName = originalMember.containingClassLookupTag()?.classId?.asSingleFqName()?.toUnsafe() ?: return false
|
||||
// If the super class is mapped to a Kotlin built-in class, then we don't require `override` keyword.
|
||||
if (JavaToKotlinClassMap.mapKotlinToJava(containingClassName) != null) {
|
||||
return true
|
||||
}
|
||||
|
||||
if (!originalMember.isAbstract) {
|
||||
val containingClass = originalMember.containingClass()?.toFirRegularClassSymbol(context.session)
|
||||
val containingClass = originalMember.containingClassLookupTag()?.toFirRegularClassSymbol(context.session)
|
||||
if (containingClass?.isInterface == false) {
|
||||
return false
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isCompiledToJvmDefault
|
||||
import org.jetbrains.kotlin.fir.analysis.jvm.checkers.isJvm6
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||
@@ -127,7 +127,7 @@ object FirJvmDefaultChecker : FirBasicDeclarationChecker() {
|
||||
for (overriddenFunction in overriddenFunctions) {
|
||||
val overriddenDeclarations = overriddenFunction.getOverriddenDeclarations()
|
||||
for (overriddenDeclaration in overriddenDeclarations) {
|
||||
val containingClassSymbol = overriddenDeclaration.containingClass()?.toSymbol(context.session)
|
||||
val containingClassSymbol = overriddenDeclaration.containingClassLookupTag()?.toSymbol(context.session)
|
||||
if (containingClassSymbol?.origin is FirDeclarationOrigin.Java &&
|
||||
overriddenDeclaration.modality != Modality.ABSTRACT
|
||||
) {
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExternal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
@@ -63,7 +63,7 @@ object FirJvmExternalDeclarationChecker : FirBasicDeclarationChecker() {
|
||||
return
|
||||
}
|
||||
|
||||
val containingClassSymbol = declaration.symbol.containingClass()?.toFirRegularClassSymbol(context.session)
|
||||
val containingClassSymbol = declaration.symbol.containingClassLookupTag()?.toFirRegularClassSymbol(context.session)
|
||||
if (containingClassSymbol != null) {
|
||||
if (containingClassSymbol.isInterface) {
|
||||
reporter.reportOn(declaration.source, FirJvmErrors.EXTERNAL_DECLARATION_IN_INTERFACE, context)
|
||||
|
||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.getContainingDeclarationSymbol
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.declarations.getAnnotationByClassId
|
||||
@@ -41,7 +41,7 @@ object FirJvmFieldApplicabilityChecker : FirPropertyChecker() {
|
||||
override fun check(declaration: FirProperty, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
val annotation = declaration.getAnnotationByClassId(JVM_FIELD_ANNOTATION_CLASS_ID) ?: return
|
||||
val session = context.session
|
||||
val containingClassSymbol = declaration.containingClass()?.toFirRegularClassSymbol(session)
|
||||
val containingClassSymbol = declaration.containingClassLookupTag()?.toFirRegularClassSymbol(session)
|
||||
|
||||
val problem = when {
|
||||
declaration.delegate != null -> DELEGATE
|
||||
|
||||
+3
-3
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.overriddenFunctions
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.jvm.FirJvmErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCallOrigin
|
||||
import org.jetbrains.kotlin.fir.expressions.toResolvedCallableSymbol
|
||||
@@ -51,7 +51,7 @@ object FirJvmInconsistentOperatorFromJavaCallChecker : FirFunctionCallChecker()
|
||||
return true
|
||||
}
|
||||
|
||||
val containingClass = containingClass()?.toFirRegularClassSymbol(context.session) ?: return false
|
||||
val containingClass = containingClassLookupTag()?.toFirRegularClassSymbol(context.session) ?: return false
|
||||
val overriddenFunctions = overriddenFunctions(containingClass, context)
|
||||
for (overriddenFunction in overriddenFunctions) {
|
||||
if (overriddenFunction is FirNamedFunctionSymbol && overriddenFunction.check(source, context, reporter)) {
|
||||
@@ -61,4 +61,4 @@ object FirJvmInconsistentOperatorFromJavaCallChecker : FirFunctionCallChecker()
|
||||
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.declaration.FirClassChecker
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors.INCOMPATIBLE_OBJC_NAME_OVERRIDE
|
||||
import org.jetbrains.kotlin.fir.analysis.native.checkers.FirNativeObjCNameChecker.getObjCNames
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.isIntersectionOverride
|
||||
@@ -46,7 +46,7 @@ object FirNativeObjCNameOverridesChecker : FirClassChecker() {
|
||||
if (overriddenSymbols.isEmpty()) return
|
||||
val objCNames = overriddenSymbols.map { it.getFirstBaseSymbol(firTypeScope).getObjCNames() }
|
||||
if (!objCNames.allNamesEquals()) {
|
||||
val containingDeclarations = overriddenSymbols.mapNotNull { it.containingClass()?.toFirRegularClassSymbol(context.session) }
|
||||
val containingDeclarations = overriddenSymbols.mapNotNull { it.containingClassLookupTag()?.toFirRegularClassSymbol(context.session) }
|
||||
reporter.reportOn(
|
||||
declarationToReport.source,
|
||||
INCOMPATIBLE_OBJC_NAME_OVERRIDE,
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.native.FirNativeErrors.INCOMPATIBLE_OBJC_REFINEMENT_OVERRIDE
|
||||
import org.jetbrains.kotlin.fir.analysis.native.checkers.FirNativeObjCRefinementChecker.hidesFromObjCClassId
|
||||
import org.jetbrains.kotlin.fir.analysis.native.checkers.FirNativeObjCRefinementChecker.refinesInSwiftClassId
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
||||
@@ -108,7 +108,7 @@ object FirNativeObjCRefinementOverridesChecker : FirClassChecker() {
|
||||
notRefinedSupers: List<FirCallableSymbol<*>>,
|
||||
context: CheckerContext
|
||||
) {
|
||||
val containingDeclarations = notRefinedSupers.mapNotNull { it.containingClass()?.toFirRegularClassSymbol(context.session) }
|
||||
val containingDeclarations = notRefinedSupers.mapNotNull { it.containingClassLookupTag()?.toFirRegularClassSymbol(context.session) }
|
||||
if (annotations.isEmpty()) {
|
||||
reportOn(declaration.source, INCOMPATIBLE_OBJC_REFINEMENT_OVERRIDE, declaration.symbol, containingDeclarations, context)
|
||||
} else {
|
||||
|
||||
+4
-4
@@ -80,7 +80,7 @@ object FirNativeThrowsChecker : FirBasicDeclarationChecker() {
|
||||
reporter.reportOn(
|
||||
declaration.source,
|
||||
FirNativeErrors.INCOMPATIBLE_THROWS_INHERITED,
|
||||
inherited.mapNotNull { it.key.containingClass()?.toFirRegularClassSymbol(context.session) },
|
||||
inherited.mapNotNull { it.key.containingClassLookupTag()?.toFirRegularClassSymbol(context.session) },
|
||||
context
|
||||
)
|
||||
return false
|
||||
@@ -90,7 +90,7 @@ object FirNativeThrowsChecker : FirBasicDeclarationChecker() {
|
||||
?: return true // Should not happen though.
|
||||
|
||||
if (decodeThrowsFilter(throwsAnnotation, context.session) != overriddenThrows) {
|
||||
val containingClassSymbol = overriddenMember.containingClass()?.toFirRegularClassSymbol(context.session)
|
||||
val containingClassSymbol = overriddenMember.containingClassLookupTag()?.toFirRegularClassSymbol(context.session)
|
||||
if (containingClassSymbol != null) {
|
||||
reporter.reportOn(throwsAnnotation?.source, FirNativeErrors.INCOMPATIBLE_THROWS_OVERRIDE, containingClassSymbol, context)
|
||||
}
|
||||
@@ -110,7 +110,7 @@ object FirNativeThrowsChecker : FirBasicDeclarationChecker() {
|
||||
|
||||
fun getInheritedThrows(localThrowsAnnotation: FirAnnotationCall?, localFunctionSymbol: FirNamedFunctionSymbol) {
|
||||
if (!visited.add(localFunctionSymbol)) return
|
||||
val containingClassSymbol = localFunctionSymbol.containingClass()?.toFirRegularClassSymbol(context.session)
|
||||
val containingClassSymbol = localFunctionSymbol.containingClassLookupTag()?.toFirRegularClassSymbol(context.session)
|
||||
|
||||
if (containingClassSymbol != null) {
|
||||
val unsubstitutedScope = containingClassSymbol.unsubstitutedScope(context)
|
||||
@@ -181,4 +181,4 @@ object FirNativeThrowsChecker : FirBasicDeclarationChecker() {
|
||||
}
|
||||
|
||||
private data class ThrowsFilter(val classes: Set<ConeKotlinType>?)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.getChild
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.containingClassForLocalAttr
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
@@ -109,7 +109,7 @@ fun FirTypeRef.toRegularClassSymbol(session: FirSession): FirRegularClassSymbol?
|
||||
* or null if no proper declaration has been found.
|
||||
*/
|
||||
fun FirDeclaration.getContainingClassSymbol(session: FirSession): FirClassLikeSymbol<*>? =
|
||||
(this as? FirCallableDeclaration)?.containingClass()?.toSymbol(session)
|
||||
(this as? FirCallableDeclaration)?.containingClassLookupTag()?.toSymbol(session)
|
||||
|
||||
@OptIn(SymbolInternals::class)
|
||||
fun FirBasedSymbol<*>.getContainingClassSymbol(session: FirSession): FirClassLikeSymbol<*>? = fir.getContainingClassSymbol(session)
|
||||
|
||||
+4
-4
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.getModifier
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
@@ -324,7 +324,7 @@ abstract class FirInlineDeclarationChecker : FirFunctionChecker() {
|
||||
}
|
||||
|
||||
private fun FirCallableSymbol<*>.isInsidePrivateClass(): Boolean {
|
||||
val containingClassSymbol = this.containingClass()?.toSymbol(session) ?: return false
|
||||
val containingClassSymbol = this.containingClassLookupTag()?.toSymbol(session) ?: return false
|
||||
|
||||
val containingClassVisibility = when (containingClassSymbol) {
|
||||
is FirAnonymousObjectSymbol -> return false
|
||||
@@ -426,7 +426,7 @@ abstract class FirInlineDeclarationChecker : FirFunctionChecker() {
|
||||
|
||||
private fun FirCallableDeclaration.getOverriddenSymbols(context: CheckerContext): List<FirCallableSymbol<out FirCallableDeclaration>> {
|
||||
if (!this.isOverride) return emptyList()
|
||||
val classSymbol = this.containingClass()?.toSymbol(context.session) as? FirClassSymbol<*> ?: return emptyList()
|
||||
val classSymbol = this.containingClassLookupTag()?.toSymbol(context.session) as? FirClassSymbol<*> ?: return emptyList()
|
||||
val scope = classSymbol.unsubstitutedScope(context)
|
||||
//this call is needed because AbstractFirUseSiteMemberScope collect overrides in it only,
|
||||
//and not in processDirectOverriddenFunctionsWithBaseScope
|
||||
@@ -455,7 +455,7 @@ abstract class FirInlineDeclarationChecker : FirFunctionChecker() {
|
||||
context: CheckerContext,
|
||||
reporter: DiagnosticReporter
|
||||
): Boolean {
|
||||
if (declaration.containingClass() == null) return true
|
||||
if (declaration.containingClassLookupTag() == null) return true
|
||||
if (effectiveVisibility == EffectiveVisibility.PrivateInClass) return true
|
||||
|
||||
if (!declaration.isFinal) {
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_IMPL_MEMBER_
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.OVERRIDING_FINAL_MEMBER_BY_DELEGATION
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
@@ -149,13 +149,13 @@ object FirNotImplementedOverrideChecker : FirClassChecker() {
|
||||
it.modality == Modality.ABSTRACT
|
||||
}
|
||||
if (implIntersections.any {
|
||||
(it.containingClass()?.toSymbol(context.session) as? FirRegularClassSymbol)?.classKind == ClassKind.CLASS
|
||||
(it.containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol)?.classKind == ClassKind.CLASS
|
||||
}
|
||||
) {
|
||||
reporter.reportOn(source, MANY_IMPL_MEMBER_NOT_IMPLEMENTED, classSymbol, notImplementedIntersectionSymbol, context)
|
||||
} else {
|
||||
if (canHaveAbstractDeclarations && abstractIntersections.any {
|
||||
(it.containingClass()?.toSymbol(context.session) as? FirRegularClassSymbol)?.classKind == ClassKind.CLASS
|
||||
(it.containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol)?.classKind == ClassKind.CLASS
|
||||
}
|
||||
) {
|
||||
return
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.overriddenFunctions
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.diagnostics.reportOn
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isOperator
|
||||
@@ -188,11 +188,11 @@ private object OperatorFunctionChecks {
|
||||
member,
|
||||
object : Check {
|
||||
override fun check(context: CheckerContext, function: FirSimpleFunction): String? {
|
||||
val containingClassSymbol = function.containingClass()?.toFirRegularClassSymbol(context.session) ?: return null
|
||||
val containingClassSymbol = function.containingClassLookupTag()?.toFirRegularClassSymbol(context.session) ?: return null
|
||||
val customEqualsSupported = context.languageVersionSettings.supportsFeature(LanguageFeature.CustomEqualsInInlineClasses)
|
||||
|
||||
if (function.overriddenFunctions(containingClassSymbol, context)
|
||||
.any { it.containingClass()?.classId == StandardClassIds.Any }
|
||||
.any { it.containingClassLookupTag()?.classId == StandardClassIds.Any }
|
||||
|| (customEqualsSupported && function.isTypedEqualsInInlineClass(context.session))
|
||||
) {
|
||||
return null
|
||||
|
||||
+5
-5
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirOptInUsageBaseCh
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.analysis.overridesBackwardCompatibilityHelper
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isFinal
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isOverride
|
||||
@@ -285,7 +285,7 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
skipCheckForContainingClassVisibility = true
|
||||
)
|
||||
}?.originalOrSelf() ?: return
|
||||
val originalContainingClassSymbol = overridden.containingClass()?.toSymbol(context.session) as? FirRegularClassSymbol ?: return
|
||||
val originalContainingClassSymbol = overridden.containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol ?: return
|
||||
reporter.reportOn(
|
||||
member.source,
|
||||
FirErrors.VIRTUAL_MEMBER_HIDDEN,
|
||||
@@ -369,7 +369,7 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
overridden: FirCallableSymbol<*>,
|
||||
context: CheckerContext
|
||||
) {
|
||||
overridden.containingClass()?.let { containingClass ->
|
||||
overridden.containingClassLookupTag()?.let { containingClass ->
|
||||
reportOn(overriding.source, FirErrors.OVERRIDING_FINAL_MEMBER, overridden, containingClass.name, context)
|
||||
}
|
||||
}
|
||||
@@ -387,7 +387,7 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
overridden: FirCallableSymbol<*>,
|
||||
context: CheckerContext
|
||||
) {
|
||||
val containingClass = overridden.containingClass() ?: return
|
||||
val containingClass = overridden.containingClassLookupTag() ?: return
|
||||
reportOn(
|
||||
overriding.source,
|
||||
FirErrors.CANNOT_WEAKEN_ACCESS_PRIVILEGE,
|
||||
@@ -403,7 +403,7 @@ object FirOverrideChecker : FirClassChecker() {
|
||||
overridden: FirCallableSymbol<*>,
|
||||
context: CheckerContext
|
||||
) {
|
||||
val containingClass = overridden.containingClass() ?: return
|
||||
val containingClass = overridden.containingClassLookupTag() ?: return
|
||||
reportOn(
|
||||
overriding.source,
|
||||
FirErrors.CANNOT_CHANGE_ACCESS_PRIVILEGE,
|
||||
|
||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.hasModifier
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.modality
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.containingClassForStaticMemberAttr
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
@@ -120,7 +120,7 @@ fun FirClassSymbol<*>.primaryConstructorSymbol(): FirConstructorSymbol? {
|
||||
}
|
||||
|
||||
fun FirSimpleFunction.isTypedEqualsInInlineClass(session: FirSession): Boolean =
|
||||
containingClass()?.toFirRegularClassSymbol(session)?.run {
|
||||
containingClassLookupTag()?.toFirRegularClassSymbol(session)?.run {
|
||||
with(this@isTypedEqualsInInlineClass) {
|
||||
contextReceivers.isEmpty() && receiverTypeRef == null && name == OperatorNameConventions.EQUALS
|
||||
&& this@run.isInline && valueParameters.size == 1 && returnTypeRef.isBoolean
|
||||
|
||||
+3
-3
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.context.findClosest
|
||||
import org.jetbrains.kotlin.fir.analysis.checkers.explicitReceiverIsNotSuperReference
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isAbstract
|
||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
|
||||
@@ -35,7 +35,7 @@ object FirAbstractSuperCallChecker : FirQualifiedAccessExpressionChecker() {
|
||||
// handles all the FirSimpleFunction/FirProperty/etc.
|
||||
val declarationSymbol = expression.toResolvedCallableSymbol() ?: return
|
||||
|
||||
val containingClassSymbol = declarationSymbol.containingClass()?.toSymbol(context.session) as? FirRegularClassSymbol ?: return
|
||||
val containingClassSymbol = declarationSymbol.containingClassLookupTag()?.toSymbol(context.session) as? FirRegularClassSymbol ?: return
|
||||
|
||||
if (containingClassSymbol.isAbstract) {
|
||||
if (declarationSymbol.isAbstract) {
|
||||
@@ -43,7 +43,7 @@ object FirAbstractSuperCallChecker : FirQualifiedAccessExpressionChecker() {
|
||||
}
|
||||
if (declarationSymbol is FirIntersectionCallableSymbol) {
|
||||
val symbolFromBaseClass = declarationSymbol.intersections.firstOrNull {
|
||||
it.containingClass()?.toSymbol(context.session)?.classKind != ClassKind.INTERFACE
|
||||
it.containingClassLookupTag()?.toSymbol(context.session)?.classKind != ClassKind.INTERFACE
|
||||
}
|
||||
if (symbolFromBaseClass?.isAbstract == true) {
|
||||
if (context.languageVersionSettings.supportsFeature(LanguageFeature.ForbidSuperDelegationToAbstractFakeOverride)) {
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ object FirOptInUsageBaseChecker {
|
||||
val result = knownExperimentalities ?: SmartSet.create()
|
||||
val session = context.session
|
||||
if (fir is FirCallableDeclaration) {
|
||||
val parentClassSymbol = fir.containingClass()?.toSymbol(session) as? FirRegularClassSymbol
|
||||
val parentClassSymbol = fir.containingClassLookupTag()?.toSymbol(session) as? FirRegularClassSymbol
|
||||
if (fir.isSubstitutionOrIntersectionOverride) {
|
||||
parentClassSymbol?.lazyResolveToPhase(FirResolvePhase.STATUS)
|
||||
val parentClassScope = parentClassSymbol?.unsubstitutedScope(context)
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.serialization.constant
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirEnumEntry
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationArgumentMapping
|
||||
@@ -98,7 +98,7 @@ internal object FirToConstantValueTransformer : FirDefaultVisitor<ConstantValue<
|
||||
|
||||
symbol is FirConstructorSymbol -> {
|
||||
val constructorCall = qualifiedAccessExpression as FirFunctionCall
|
||||
val constructedClassSymbol = symbol.containingClass()?.toFirRegularClassSymbol(data) ?: return null
|
||||
val constructedClassSymbol = symbol.containingClassLookupTag()?.toFirRegularClassSymbol(data) ?: return null
|
||||
return if (constructedClassSymbol.classKind == ClassKind.ANNOTATION_CLASS) {
|
||||
AnnotationValue(
|
||||
buildAnnotationCall {
|
||||
|
||||
+1
-1
@@ -85,7 +85,7 @@ open class FirJvmMangleComputer(
|
||||
|
||||
private fun FirDeclaration.visitParent() {
|
||||
val (parentPackageFqName, parentClassId) = when (this) {
|
||||
is FirCallableDeclaration -> this.containingClass()?.classId?.let { it.packageFqName to it } ?: return
|
||||
is FirCallableDeclaration -> this.containingClassLookupTag()?.classId?.let { it.packageFqName to it } ?: return
|
||||
is FirClassLikeDeclaration -> this.symbol.classId.let { it.packageFqName to it.outerClassId }
|
||||
else -> return
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ private fun FirCallableSymbol<*>.toSymbolForCall(
|
||||
): IrSymbol? {
|
||||
val dispatchReceiverLookupTag = when {
|
||||
dispatchReceiver is FirNoReceiverExpression -> {
|
||||
val containingClass = containingClass()
|
||||
val containingClass = containingClassLookupTag()
|
||||
if (containingClass != null && containingClass.classId != StandardClassIds.Any) {
|
||||
// Make sure that symbol is not extension and is not from inline class
|
||||
val coneType = ((explicitReceiver as? FirResolvedQualifier)?.symbol as? FirClassSymbol)?.defaultType()
|
||||
@@ -367,7 +367,7 @@ internal tailrec fun FirCallableSymbol<*>.unwrapCallRepresentative(root: FirCall
|
||||
}
|
||||
|
||||
val overriddenSymbol = fir.originalForSubstitutionOverride?.takeIf {
|
||||
it.containingClass() == root.containingClass()
|
||||
it.containingClassLookupTag() == root.containingClassLookupTag()
|
||||
}?.symbol ?: return this
|
||||
|
||||
return overriddenSymbol.unwrapCallRepresentative(this)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression
|
||||
@@ -471,7 +471,7 @@ class Fir2IrClassifierStorage(
|
||||
): IrEnumEntry {
|
||||
getCachedIrEnumEntry(enumEntry)?.let { return it }
|
||||
val containingFile = firProvider.getFirCallableContainerFile(enumEntry.symbol)
|
||||
val irParentClass = irParent ?: enumEntry.containingClass()?.let { findIrClass(it) }
|
||||
val irParentClass = irParent ?: enumEntry.containingClassLookupTag()?.let { findIrClass(it) }
|
||||
|
||||
@Suppress("NAME_SHADOWING")
|
||||
val predefinedOrigin = predefinedOrigin ?: if (containingFile != null) {
|
||||
|
||||
+6
-6
@@ -265,7 +265,7 @@ class Fir2IrDeclarationStorage(
|
||||
val firBasedSymbol = callableDeclaration.symbol
|
||||
val callableId = firBasedSymbol.callableId
|
||||
val callableOrigin = callableDeclaration.origin
|
||||
return findIrParent(callableId.packageName, callableDeclaration.containingClass(), firBasedSymbol, callableOrigin)
|
||||
return findIrParent(callableId.packageName, callableDeclaration.containingClassLookupTag(), firBasedSymbol, callableOrigin)
|
||||
}
|
||||
|
||||
private fun IrDeclaration.setAndModifyParent(irParent: IrDeclarationParent?) {
|
||||
@@ -470,7 +470,7 @@ class Fir2IrDeclarationStorage(
|
||||
return createIrFunction(
|
||||
function,
|
||||
irParent,
|
||||
containingClass = function.containingClass(),
|
||||
containingClass = function.containingClassLookupTag(),
|
||||
isLocal = isLocal,
|
||||
forceTopLevelPrivate = forceTopLevelPrivate
|
||||
)
|
||||
@@ -973,7 +973,7 @@ class Fir2IrDeclarationStorage(
|
||||
signatureCalculator: () -> IdSignature?,
|
||||
referenceIfAny: (IdSignature) -> IC?
|
||||
): IC? {
|
||||
val isFakeOverride = dispatchReceiverLookupTag != null && dispatchReceiverLookupTag != declaration.containingClass()
|
||||
val isFakeOverride = dispatchReceiverLookupTag != null && dispatchReceiverLookupTag != declaration.containingClassLookupTag()
|
||||
if (!isFakeOverride) {
|
||||
cache[declaration]?.let { return it }
|
||||
}
|
||||
@@ -1277,7 +1277,7 @@ class Fir2IrDeclarationStorage(
|
||||
createIrFunction(fir, irParent, predefinedOrigin = declarationOrigin).symbol
|
||||
}
|
||||
is FirSimpleFunction -> {
|
||||
val unmatchedReceiver = dispatchReceiverLookupTag != firFunctionSymbol.containingClass()
|
||||
val unmatchedReceiver = dispatchReceiverLookupTag != firFunctionSymbol.containingClassLookupTag()
|
||||
if (unmatchedReceiver) {
|
||||
generateLazyFakeOverrides(fir.name, dispatchReceiverLookupTag)
|
||||
}
|
||||
@@ -1345,7 +1345,7 @@ class Fir2IrDeclarationStorage(
|
||||
if (fir.isLocal) {
|
||||
return localStorage.getDelegatedProperty(fir)?.symbol ?: getIrVariableSymbol(fir)
|
||||
}
|
||||
val containingClassLookupTag = firPropertySymbol.containingClass()
|
||||
val containingClassLookupTag = firPropertySymbol.containingClassLookupTag()
|
||||
val unmatchedReceiver = dispatchReceiverLookupTag != containingClassLookupTag
|
||||
if (unmatchedReceiver) {
|
||||
generateLazyFakeOverrides(fir.name, dispatchReceiverLookupTag)
|
||||
@@ -1561,7 +1561,7 @@ class Fir2IrDeclarationStorage(
|
||||
is FirEnumEntry -> {
|
||||
classifierStorage.getCachedIrEnumEntry(firDeclaration)?.let { return it.symbol }
|
||||
val containingFile = firProvider.getFirCallableContainerFile(firVariableSymbol)
|
||||
val irParentClass = firDeclaration.containingClass()?.let { classifierStorage.findIrClass(it) }
|
||||
val irParentClass = firDeclaration.containingClassLookupTag()?.let { classifierStorage.findIrClass(it) }
|
||||
classifierStorage.createIrEnumEntry(
|
||||
firDeclaration,
|
||||
irParent = irParentClass,
|
||||
|
||||
+1
-1
@@ -383,7 +383,7 @@ class FakeOverrideGenerator(
|
||||
irProducer: (F) -> S
|
||||
): List<S> {
|
||||
val overriddenContainingClass =
|
||||
overridden.containingClass()?.toSymbol(session)?.fir as? FirClass ?: return emptyList()
|
||||
overridden.containingClassLookupTag()?.toSymbol(session)?.fir as? FirClass ?: return emptyList()
|
||||
|
||||
val overriddenContainingIrClass =
|
||||
declarationStorage.classifierStorage.getIrClassSymbol(overriddenContainingClass.symbol).owner as? IrClass
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@ class FirBasedSignatureComposer(override val mangler: FirMangler) : Fir2IrSignat
|
||||
)
|
||||
}
|
||||
is FirCallableDeclaration -> {
|
||||
val classId = containingClassId ?: declaration.containingClass()?.classId
|
||||
val classId = containingClassId ?: declaration.containingClassLookupTag()?.classId
|
||||
val packageName = classId?.packageFqName ?: declaration.symbol.callableId.packageName
|
||||
val callableName = declaration.irName
|
||||
|
||||
|
||||
+1
-1
@@ -220,7 +220,7 @@ class JavaClassUseSiteMemberScope(
|
||||
private fun FirPropertySymbol.getBuiltinSpecialPropertyGetterName(): Name? {
|
||||
var result: Name? = null
|
||||
superTypeScopes.processOverriddenPropertiesAndSelf(this) { overridden ->
|
||||
val fqName = overridden.fir.containingClass()?.classId?.asSingleFqName()?.child(overridden.fir.name)
|
||||
val fqName = overridden.fir.containingClassLookupTag()?.classId?.asSingleFqName()?.child(overridden.fir.name)
|
||||
|
||||
BuiltinSpecialProperties.PROPERTY_FQ_NAME_TO_JVM_GETTER_NAME_MAP[fqName]?.let { name ->
|
||||
result = name
|
||||
|
||||
+3
-3
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.calls.jvm
|
||||
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||
@@ -35,10 +35,10 @@ class ConeEquivalentCallConflictResolver(
|
||||
val result = mutableSetOf<Candidate>()
|
||||
outerLoop@ for (myCandidate in candidates) {
|
||||
val me = myCandidate.symbol.fir
|
||||
if (me is FirCallableDeclaration && me.symbol.containingClass() == null) {
|
||||
if (me is FirCallableDeclaration && me.symbol.containingClassLookupTag() == null) {
|
||||
for (otherCandidate in result) {
|
||||
val other = otherCandidate.symbol.fir
|
||||
if (other is FirCallableDeclaration && other.symbol.containingClass() == null) {
|
||||
if (other is FirCallableDeclaration && other.symbol.containingClassLookupTag() == null) {
|
||||
if (areEquivalentTopLevelCallables(me, myCandidate, other, otherCandidate)) {
|
||||
continue@outerLoop
|
||||
}
|
||||
|
||||
+4
-4
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.resolve.calls.jvm
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirField
|
||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||
@@ -33,10 +33,10 @@ class JvmPlatformOverloadsConflictResolver(
|
||||
val result = mutableSetOf<Candidate>()
|
||||
outerLoop@ for (myCandidate in candidates) {
|
||||
val me = myCandidate.symbol.fir
|
||||
if (me is FirProperty && me.symbol.containingClass() != null) {
|
||||
if (me is FirProperty && me.symbol.containingClassLookupTag() != null) {
|
||||
for (otherCandidate in candidates) {
|
||||
val other = otherCandidate.symbol.fir
|
||||
if (other is FirField && other.symbol.containingClass() != null) {
|
||||
if (other is FirField && other.symbol.containingClassLookupTag() != null) {
|
||||
// NB: FE 1.0 does class equivalence check here
|
||||
// However, in FIR container classes aren't the same for our samples (see fieldPropertyOverloads.kt)
|
||||
// E.g. we can have SomeConcreteJavaEnum for field and kotlin.Enum for static property 'name'
|
||||
@@ -48,4 +48,4 @@ class JvmPlatformOverloadsConflictResolver(
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.scopes.jvm
|
||||
|
||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
fun FirFunction.computeJvmSignature(typeConversion: (FirTypeRef) -> ConeKotlinType? = FirTypeRef::coneTypeSafe): String? {
|
||||
val containingClass = containingClass() ?: return null
|
||||
val containingClass = containingClassLookupTag() ?: return null
|
||||
|
||||
return SignatureBuildingComponents.signature(containingClass.classId, computeJvmDescriptor(typeConversion = typeConversion))
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
||||
}
|
||||
}
|
||||
|
||||
val containingLookupTag = this.containingClass()
|
||||
val containingLookupTag = this.containingClassLookupTag()
|
||||
val containingClass = containingLookupTag?.toSymbol(session)?.fir
|
||||
|
||||
if (isStatic && containingClass != null) {
|
||||
@@ -521,7 +521,7 @@ fun FirBasedSymbol<*>.getOwnerLookupTag(): ConeClassLikeLookupTag? {
|
||||
return when (this) {
|
||||
is FirBackingFieldSymbol -> fir.propertySymbol.getOwnerLookupTag()
|
||||
is FirClassLikeSymbol<*> -> getContainingClassLookupTag()
|
||||
is FirCallableSymbol<*> -> containingClass()
|
||||
is FirCallableSymbol<*> -> containingClassLookupTag()
|
||||
else -> error("Unsupported owner search for ${fir.javaClass}: ${fir.render()}")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -502,7 +502,7 @@ private fun initialTypeOfCandidate(candidate: Candidate, typeRef: FirResolvedTyp
|
||||
}
|
||||
|
||||
fun FirCallableDeclaration.getContainingClass(session: FirSession): FirRegularClass? =
|
||||
this.containingClass()?.let { lookupTag ->
|
||||
this.containingClassLookupTag()?.let { lookupTag ->
|
||||
session.symbolProvider.getSymbolByLookupTag(lookupTag)?.fir as? FirRegularClass
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -293,7 +293,7 @@ private class ReturnTypeCalculatorWithJump(
|
||||
val provider = session.firProvider
|
||||
val file = provider.getFirCallableContainerFile(symbol)
|
||||
|
||||
val outerClasses = generateSequence(symbol.containingClass()?.classId) { classId ->
|
||||
val outerClasses = generateSequence(symbol.containingClassLookupTag()?.classId) { classId ->
|
||||
classId.outerClassId
|
||||
}.mapTo(mutableListOf()) { provider.getFirClassifierByFqName(it) }
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ fun FirCallableDeclaration.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag
|
||||
return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag
|
||||
}
|
||||
|
||||
fun FirCallableSymbol<*>.containingClass(): ConeClassLikeLookupTag? = fir.containingClass()
|
||||
fun FirCallableDeclaration.containingClass(): ConeClassLikeLookupTag? {
|
||||
fun FirCallableSymbol<*>.containingClassLookupTag(): ConeClassLikeLookupTag? = fir.containingClassLookupTag()
|
||||
fun FirCallableDeclaration.containingClassLookupTag(): ConeClassLikeLookupTag? {
|
||||
return (containingClassForStaticMemberAttr ?: dispatchReceiverClassOrNull())
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.samWithReceiver.k2
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.containingClass
|
||||
import org.jetbrains.kotlin.fir.containingClassLookupTag
|
||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.utils.isSuspend
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSamConversionTransformerExtension
|
||||
@@ -21,7 +21,7 @@ class FirSamWithReceiverConventionTransformer(
|
||||
session: FirSession
|
||||
) : FirSamConversionTransformerExtension(session) {
|
||||
override fun getCustomFunctionalTypeForSamConversion(function: FirSimpleFunction): ConeLookupTagBasedType? {
|
||||
val containingClassSymbol = function.containingClass()?.toFirRegularClassSymbol(session) ?: return null
|
||||
val containingClassSymbol = function.containingClassLookupTag()?.toFirRegularClassSymbol(session) ?: return null
|
||||
return runIf(containingClassSymbol.resolvedAnnotationClassIds.any { it.asSingleFqName().asString() in annotations }) {
|
||||
val parameterTypes = function.valueParameters.map { it.returnTypeRef.coneType }
|
||||
if (parameterTypes.isEmpty()) return null
|
||||
|
||||
Reference in New Issue
Block a user