[ObjCInterop] Implement @ObjCSignatureOverride
This annotation leads to conflicting overloads error supression,
in case where several function with the same argument types,
but different argument names are inherited from ObjC class.
We need to implement it in both K1 and K2 to make the IDE experience
better.
But the annotation itself wouldn't be available in K1.
^KT-61323
This commit is contained in:
committed by
Space Team
parent
77eee0d3fc
commit
6e8a7d4662
@@ -42,28 +42,34 @@ headerFilter = lib.h
|
||||
// FILE: main.kt
|
||||
@file:OptIn(kotlinx.cinterop.ExperimentalForeignApi::class)
|
||||
|
||||
import lib.ObjCClass
|
||||
// required for K1
|
||||
@file:Suppress("CONFLICTING_OVERLOADS", "UNRESOLVED_REFERENCE", "API_NOT_AVAILABLE")
|
||||
|
||||
import lib.ObjCClass
|
||||
import kotlinx.cinterop.ObjCSignatureOverride
|
||||
|
||||
@Suppress("CONFLICTING_OVERLOADS")
|
||||
class OverrideAll : ObjCClass() {
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(arg: Int, arg2: String?) = "D"
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(ohNoOtherName: Int, name2: String?) = "E"
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(arg: Int, name3: String?) = "F"
|
||||
}
|
||||
|
||||
@Suppress("CONFLICTING_OVERLOADS")
|
||||
class OverrideNone : ObjCClass() {
|
||||
}
|
||||
|
||||
@Suppress("CONFLICTING_OVERLOADS")
|
||||
class OverrideOne : ObjCClass() {
|
||||
override fun fooWithArg(arg: Int, arg2: String?) = "G"
|
||||
}
|
||||
|
||||
@Suppress("CONFLICTING_OVERLOADS")
|
||||
class OverrideWithDifferentFirstArgName : ObjCClass() {
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(a: Int, arg2: String?) = "H"
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(b: Int, name2: String?) = "I"
|
||||
@ObjCSignatureOverride
|
||||
override fun fooWithArg(c: Int, name3: String?) = "J"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user