[Commonizer] Better handling of ObjcMethod and related annotations

They are important for overridability rules, so can't be just ignored.
Some arguments are still different on different platforms, so
commonized version is a bit strange.

But the only important part is selector, which should be same on
all platforms.

^KT-57588
This commit is contained in:
Pavel Kunyavskiy
2024-01-23 17:36:15 +01:00
committed by Space Team
parent ffed0ecf1f
commit 0a07f16896
6 changed files with 103 additions and 59 deletions
@@ -87,39 +87,40 @@ expect fun functionMismatchedParameterNames30(arg0: Int, vararg variadicArgument
expect fun functionMismatchedParameterNames31(i: Int, s: String)
@kotlin.commonizer.ObjCCallable
@kotlinx.cinterop.ObjCMethod("fmpn34:s:", "", false)
expect fun functionMismatchedParameterNames34(i: Int, s: String)
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn37:arg1:", "", false)
expect fun functionMismatchedParameterNames37(arg0: Int, arg1: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn38:s:", "", false)
expect fun functionMismatchedParameterNames38(i: Int, s: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn39:s:", "", false)
expect fun functionMismatchedParameterNames39(i: Int, s: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn40:s:", "", false)
expect fun functionMismatchedParameterNames40(i: Int, s: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn41:arg1:", "", false)
expect fun functionMismatchedParameterNames41(arg0: Int, arg1: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn42:arg1:", "", false)
expect fun functionMismatchedParameterNames42(arg0: Int, arg1: String)
// hasStableParameterNames=false
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("fmpn43:arg1:", "", false)
expect fun functionMismatchedParameterNames43(arg0: Int, arg1: String)
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("ofpn:s", "", false)
expect fun overloadedFunctionByParameterNames(i: Int, s: String)
@kotlin.commonizer.ObjCCallable
@kotlin.commonizer.ObjCCallable @kotlinx.cinterop.ObjCMethod("ofpn:xs", "", false)
expect fun overloadedFunctionByParameterNames(xi: Int, xs: String)
expect inline fun inlineFunction1(lazyMessage: () -> String)
@@ -3,5 +3,4 @@ package kotlinx.cinterop
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
@Retention(AnnotationRetention.BINARY)
annotation class ObjCMethod() // fake annotation class without properties
annotation class ObjCMethod(val selector: String, val encoding: String, val isStret: Boolean)
@@ -42,61 +42,61 @@ fun functionMismatchedParameterNames30(arg0: Int, vararg variadicArguments: Int)
fun functionMismatchedParameterNames31(i: Int, s: String) {}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn32:s:", "", false)
fun functionMismatchedParameterNames32(i: Int, s: String) {
}
fun functionMismatchedParameterNames33(i: Int, s: String) {}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn34:s:", "", false)
fun functionMismatchedParameterNames34(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn35:s:", "", false)
fun functionMismatchedParameterNames35(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn36:arg1:", "", false)
fun functionMismatchedParameterNames36(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn37:arg1:", "", false)
fun functionMismatchedParameterNames37(arg0: Int, arg1: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn38:s:", "", false)
fun functionMismatchedParameterNames38(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn39:s:", "", false)
fun functionMismatchedParameterNames39(i: Int, s: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn40:s:", "", false)
fun functionMismatchedParameterNames40(i: Int, s: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn41:arg1:", "", false)
fun functionMismatchedParameterNames41(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn42:arg1:", "", false)
fun functionMismatchedParameterNames42(arg0: Int, arg1: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn43:arg1:", "", false)
fun functionMismatchedParameterNames43(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("ofpn:s:", "", false)
fun overloadedFunctionByParameterNames(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("ofpn:xs:", "", false)
fun overloadedFunctionByParameterNames(xi: Int, xs: String) {
}
@@ -43,59 +43,59 @@ fun functionMismatchedParameterNames30(arg0: Int, vararg variadicArguments: Int)
fun functionMismatchedParameterNames31(i: Int, s: String) {}
fun functionMismatchedParameterNames32(i: Int, s: String) {}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn33:s:", "", false)
fun functionMismatchedParameterNames33(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn34:s:", "", false)
fun functionMismatchedParameterNames34(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn35:arg1:", "", false)
fun functionMismatchedParameterNames35(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn36:s:", "", false)
fun functionMismatchedParameterNames36(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn37:arg1:", "", false)
fun functionMismatchedParameterNames37(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn38:s:", "", false)
fun functionMismatchedParameterNames38(i: Int, s: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn39:s:", "", false)
fun functionMismatchedParameterNames39(i: Int, s: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn40:s:", "", false)
fun functionMismatchedParameterNames40(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn41:arg1:", "", false)
fun functionMismatchedParameterNames41(arg0: Int, arg1: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn42:arg1:", "", false)
fun functionMismatchedParameterNames42(arg0: Int, arg1: String) {
}
// hasStableParameterNames=false
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("fmpn43:arg1:", "", false)
fun functionMismatchedParameterNames43(arg0: Int, arg1: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("ofpn:s:", "", false)
fun overloadedFunctionByParameterNames(i: Int, s: String) {
}
@kotlinx.cinterop.ObjCMethod
@kotlinx.cinterop.ObjCMethod("ofpn:xs:", "", false)
fun overloadedFunctionByParameterNames(xi: Int, xs: String) {
}