Native: support objcExportReportNameCollisions=true binary option

This binary option makes the compiler emit a warning whenever it mangles
a name emitted by ObjCExport.

^KT-63153 Fixed
This commit is contained in:
Svyatoslav Scherbina
2023-11-03 12:49:22 +01:00
committed by Space Team
parent 656b61b945
commit 8d20d5b16c
12 changed files with 144 additions and 13 deletions
@@ -0,0 +1,38 @@
@file:OptIn(kotlin.experimental.ExperimentalObjCName::class)
package pkg.lib1
interface InterfaceClash
class ClassClash
interface InterfaceClash2
class ClassClash2
@ObjCName("InterfaceClash2")
interface InterfaceClashWithObjCName
@ObjCName("ClassClash2")
class ClassClashWithObjCName
class Lib1Kt
enum class E {
ONE,
one,
@ObjCName("one")
TWO,
ENTRIES,
@ObjCName("values") VALUES1;
}
interface I1 {
val prop: Int
fun method()
}
interface I2 {
val prop: String
fun method()
}
fun topLevel(arg: Int) {}
fun topLevel(arg: Long) {}
@@ -0,0 +1,4 @@
package pkg.lib2
interface InterfaceClash
class ClassClash
@@ -0,0 +1,25 @@
warning: name is mangled when generating Objective-C header
(at class ClassClashWithObjCName defined in pkg.lib1)
warning: name is mangled when generating Objective-C header
(at enum entry one defined in pkg.lib1.E)
warning: name is mangled when generating Objective-C header
(at enum entry TWO defined in pkg.lib1.E)
warning: name is mangled when generating Objective-C header
(at fun values(): Array<E> defined in pkg.lib1.E)
warning: name is mangled when generating Objective-C header
(at val entries: EnumEntries<E> defined in pkg.lib1.E)
warning: name is mangled when generating Objective-C header
(at val prop: String defined in pkg.lib1.I2)
warning: name is mangled when generating Objective-C header
(at fun `<get-prop>`(): String defined in pkg.lib1.I2)
warning: name is mangled when generating Objective-C header
(at interface InterfaceClashWithObjCName defined in pkg.lib1)
warning: name is mangled when generating Objective-C header
(at class ClassClash defined in pkg.lib2)
warning: name is mangled when generating Objective-C header
(at interface InterfaceClash defined in pkg.lib2)
warning: name "TOCEDLib1Kt" is mangled when generating Objective-C header
warning: name "Lib1Kt" is mangled when generating Objective-C header
warning: name is mangled when generating Objective-C header
(at fun topLevel(arg: Long): Unit defined in pkg.lib1)
OK