| // DISABLE_NATIVE: isAppleTarget=false |
| // KIND: STANDALONE |
| // MODULE: base |
| // FILE: base.kt |
| |
| package bindClassToObjCName.base |
| |
| abstract class Base1 |
| class Base2 |
| open class Base3 : Base1() |
| class Base4 : Base3() |
| |
| object BaseObject |
| |
| class BaseHolder { |
| class Nested |
| inner class Inner |
| |
| companion object |
| } |
| |
| // MODULE: gen(base) |
| // FILE: gen.kt |
| |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.Base1::class, "Base1ObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.Base3::class, "Base3ObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.gen.Gen1::class, "Gen1ObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.gen.Gen3::class, "Gen3ObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.BaseObject::class, "BaseObjectObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.BaseHolder.Nested::class, "BaseNestedObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.BaseHolder.Inner::class, "BaseInnerObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.BaseHolder.Companion::class, "BaseCompanionObjectObjCName") |
| |
| package bindClassToObjCName.gen |
| |
| abstract class Gen1 |
| class Gen2 |
| open class Gen3 : Gen1() |
| class Gen4 : Gen3() |
| |
| // MODULE: main(base, gen) |
| // FILE: main.kt |
| |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.base.Base4::class, "Base4ObjCName") |
| @file:kotlin.native.internal.objc.BindClassToObjCName(bindClassToObjCName.gen.Gen4::class, "Gen4ObjCName") |
| |
| import kotlin.native.internal.reflect.objCNameOrNull |
| import kotlin.test.* |
| |
| fun box(): String { |
| assertEquals("Base1ObjCName", bindClassToObjCName.base.Base1::class.objCNameOrNull) |
| assertNull(bindClassToObjCName.base.Base2::class.objCNameOrNull) |
| assertEquals("Base3ObjCName", bindClassToObjCName.base.Base3::class.objCNameOrNull) |
| assertEquals("Base4ObjCName", bindClassToObjCName.base.Base4::class.objCNameOrNull) |
| assertEquals("Gen1ObjCName", bindClassToObjCName.gen.Gen1::class.objCNameOrNull) |
| assertNull(bindClassToObjCName.gen.Gen2::class.objCNameOrNull) |
| assertEquals("Gen3ObjCName", bindClassToObjCName.gen.Gen3::class.objCNameOrNull) |
| assertEquals("Gen4ObjCName", bindClassToObjCName.gen.Gen4::class.objCNameOrNull) |
| assertEquals("BaseObjectObjCName", bindClassToObjCName.base.BaseObject::class.objCNameOrNull) |
| assertNull(bindClassToObjCName.base.BaseHolder::class.objCNameOrNull) |
| assertEquals("BaseNestedObjCName", bindClassToObjCName.base.BaseHolder.Nested::class.objCNameOrNull) |
| assertEquals("BaseInnerObjCName", bindClassToObjCName.base.BaseHolder.Inner::class.objCNameOrNull) |
| assertEquals("BaseCompanionObjectObjCName", bindClassToObjCName.base.BaseHolder.Companion::class.objCNameOrNull) |
| return "OK" |
| } |