[ObjCExport] Translate ObjCObject types, respecting the @ExternalObjCClass annotation
KT-65891 Fixed
This commit is contained in:
committed by
Space Team
parent
a5baf42422
commit
622a88ff26
+51
@@ -567,6 +567,57 @@ class ObjCExportTypeTranslationTest(
|
||||
assertEquals("NSArray<NSString *> *", header.renderTypesOfSymbol("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - ObjCObject - no ExternalObjCClass annotation`() {
|
||||
val header = header(
|
||||
"""
|
||||
class Foo : kotlinx.cinterop.ObjCObject
|
||||
val foo: Foo get() = error("stub")
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
assertEquals("id", header.renderTypesOfSymbol("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - ObjCObject - with ExternalObjCClass annotation`() {
|
||||
val header = header(
|
||||
"""
|
||||
@kotlinx.cinterop.ExternalObjCClass
|
||||
class Foo: kotlinx.cinterop.ObjCObject
|
||||
val foo: Foo get() = error("stub")
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
assertEquals("Foo *", header.renderTypesOfSymbol("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - ObjCObject - with ExternalObjCClass annotation - in super class`() {
|
||||
val header = header(
|
||||
"""
|
||||
@kotlinx.cinterop.ExternalObjCClass
|
||||
open class A: kotlinx.cinterop.ObjCObject
|
||||
class Foo: A()
|
||||
val foo: Foo get() = error("stub")
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
assertEquals("A *", header.renderTypesOfSymbol("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test - ObjCObject - with ObjCClass supertype`() {
|
||||
val header = header(
|
||||
"""
|
||||
class Foo: kotlinx.cinterop.ObjCClass
|
||||
val foo: Foo get() = error("stub")
|
||||
""".trimIndent()
|
||||
)
|
||||
|
||||
assertEquals("Class", header.renderTypesOfSymbol("foo"))
|
||||
}
|
||||
|
||||
private fun header(
|
||||
@Language("kotlin") vararg sourceCode: String,
|
||||
configuration: HeaderGenerator.Configuration = HeaderGenerator.Configuration(),
|
||||
|
||||
Reference in New Issue
Block a user