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