[K/N] Remove platform-dependent check from IrObjCOverridabilityCondition

^KT-57640 Fixed
This commit is contained in:
Vladimir Sukharev
2024-01-19 13:23:28 +01:00
committed by Space Team
parent 006410641b
commit 5d60c52e30
@@ -36,6 +36,7 @@ object IrObjCOverridabilityCondition : IrExternalOverridabilityCondition {
subMember: IrOverridableMember, subMember: IrOverridableMember,
): IrExternalOverridabilityCondition.Result { ): IrExternalOverridabilityCondition.Result {
if (superMember.name == subMember.name) { // Slow path: if (superMember.name == subMember.name) { // Slow path:
// KT-57640: There's no necessity to implement platform-dependent overridability check for properties
if (superMember is IrFunction && subMember is IrFunction) { if (superMember is IrFunction && subMember is IrFunction) {
superMember.getExternalObjCMethodInfo()?.let { superInfo -> superMember.getExternalObjCMethodInfo()?.let { superInfo ->
val subInfo = subMember.getExternalObjCMethodInfo() val subInfo = subMember.getExternalObjCMethodInfo()
@@ -54,17 +55,12 @@ object IrObjCOverridabilityCondition : IrExternalOverridabilityCondition {
} }
} }
} }
} else if (superMember.isExternalObjCClassProperty() && subMember.isExternalObjCClassProperty()) {
return IrExternalOverridabilityCondition.Result.OVERRIDABLE
} }
} }
return IrExternalOverridabilityCondition.Result.UNKNOWN return IrExternalOverridabilityCondition.Result.UNKNOWN
} }
private fun IrOverridableMember.isExternalObjCClassProperty() = this is IrProperty &&
(this.parent as? IrClass)?.isExternalObjCClass() == true
private fun parameterNamesMatch(first: IrFunction, second: IrFunction): Boolean { private fun parameterNamesMatch(first: IrFunction, second: IrFunction): Boolean {
// The original Objective-C method selector is represented as // The original Objective-C method selector is represented as
// function name and parameter names (except first). // function name and parameter names (except first).