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:
committed by
Space Team
parent
e15894e98e
commit
39327a37cb
+9
-2
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user