IR: pass also unsubstituted member to external conditions

In the future version of JavaIncompatibilityRulesOverridabilityCondition
for IR, we need to compute the original JVM signature of a declaration.
In descriptors, it's possible simply by using `original`.
This commit is contained in:
Alexander Udalov
2023-10-31 12:14:36 +01:00
committed by Space Team
parent e15894e98e
commit 39327a37cb
5 changed files with 41 additions and 29 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.IrOverridableMember
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.overrides.IrExternalOverridabilityCondition
import org.jetbrains.kotlin.ir.overrides.MemberWithOriginal
/**
* Describes method overriding rules for Objective-C methods.
@@ -25,8 +26,14 @@ object IrObjCOverridabilityCondition : IrExternalOverridabilityCondition {
override val contract = IrExternalOverridabilityCondition.Contract.BOTH
override fun isOverridable(
superMember: MemberWithOriginal,
subMember: MemberWithOriginal,
): IrExternalOverridabilityCondition.Result =
isOverridableImpl(superMember.member, subMember.member)
private fun isOverridableImpl(
superMember: IrOverridableMember,
subMember: IrOverridableMember
subMember: IrOverridableMember,
): IrExternalOverridabilityCondition.Result {
if (superMember.name == subMember.name) { // Slow path:
if (superMember is IrFunction && subMember is IrFunction) {
@@ -74,4 +81,4 @@ object IrObjCOverridabilityCondition : IrExternalOverridabilityCondition {
return true
}
}
}