diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt index 31bce5491f1..d9fd8ee6027 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/signaturer/FirBasedSignatureComposer.kt @@ -61,7 +61,7 @@ class FirBasedSignatureComposer(private val mangler: FirMangler) : Fir2IrSignatu if (declaration is FirRegularClass && declaration.classId.isLocal) return null if (declaration is FirCallableMemberDeclaration<*>) { if (declaration.visibility == Visibilities.Local) return null - if (declaration.symbol.dispatchReceiverClassOrNull()?.classId?.isLocal == true || containingClass?.classId?.isLocal == true) return null + if (declaration.dispatchReceiverClassOrNull()?.classId?.isLocal == true || containingClass?.classId?.isLocal == true) return null } val builder = SignatureBuilder() try { diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt index 566ffa8166b..80459211a26 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt @@ -15,8 +15,10 @@ import org.jetbrains.kotlin.fir.types.ConeIntersectionType fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? = (fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull() -fun FirCallableDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? { - if (this !is FirCallableMemberDeclaration<*>) return null +fun FirCallableDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? = + (this as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull() + +fun FirCallableMemberDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? { if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull() return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag @@ -27,6 +29,10 @@ fun FirCallableDeclaration<*>.containingClass(): ConeClassLikeLookupTag? { return (containingClassAttr ?: dispatchReceiverClassOrNull()) } +fun FirCallableMemberDeclaration<*>.containingClass(): ConeClassLikeLookupTag? { + return (containingClassAttr ?: dispatchReceiverClassOrNull()) +} + private object ContainingClassKey : FirDeclarationDataKey() var FirCallableDeclaration<*>.containingClassAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)