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 FirRegularClass && declaration.classId.isLocal) return null
|
||||||
if (declaration is FirCallableMemberDeclaration<*>) {
|
if (declaration is FirCallableMemberDeclaration<*>) {
|
||||||
if (declaration.visibility == Visibilities.Local) return null
|
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()
|
val builder = SignatureBuilder()
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -15,8 +15,10 @@ import org.jetbrains.kotlin.fir.types.ConeIntersectionType
|
|||||||
fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
|
fun FirCallableSymbol<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
|
||||||
(fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull()
|
(fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull()
|
||||||
|
|
||||||
fun FirCallableDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
|
fun FirCallableDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? =
|
||||||
if (this !is FirCallableMemberDeclaration<*>) return null
|
(this as? FirCallableMemberDeclaration<*>)?.dispatchReceiverClassOrNull()
|
||||||
|
|
||||||
|
fun FirCallableMemberDeclaration<*>.dispatchReceiverClassOrNull(): ConeClassLikeLookupTag? {
|
||||||
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull()
|
if (dispatchReceiverType is ConeIntersectionType && isIntersectionOverride) return symbol.baseForIntersectionOverride!!.fir.dispatchReceiverClassOrNull()
|
||||||
|
|
||||||
return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag
|
return (dispatchReceiverType as? ConeClassLikeType)?.lookupTag
|
||||||
@@ -27,6 +29,10 @@ fun FirCallableDeclaration<*>.containingClass(): ConeClassLikeLookupTag? {
|
|||||||
return (containingClassAttr ?: dispatchReceiverClassOrNull())
|
return (containingClassAttr ?: dispatchReceiverClassOrNull())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FirCallableMemberDeclaration<*>.containingClass(): ConeClassLikeLookupTag? {
|
||||||
|
return (containingClassAttr ?: dispatchReceiverClassOrNull())
|
||||||
|
}
|
||||||
|
|
||||||
private object ContainingClassKey : FirDeclarationDataKey()
|
private object ContainingClassKey : FirDeclarationDataKey()
|
||||||
var FirCallableDeclaration<*>.containingClassAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
|
var FirCallableDeclaration<*>.containingClassAttr: ConeClassLikeLookupTag? by FirDeclarationDataRegistry.data(ContainingClassKey)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user