FIR: Optimize unnecessary interface casts by adding relevant overload
This commit is contained in:
+1
-1
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user