[K/N] Remove platform-dependent check from IrObjCOverridabilityCondition
^KT-57640 Fixed
This commit is contained in:
committed by
Space Team
parent
006410641b
commit
5d60c52e30
+1
-5
@@ -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).
|
||||||
|
|||||||
Reference in New Issue
Block a user