diff --git a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt index ee59c12cd2c..58eddb4f725 100644 --- a/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt +++ b/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/objcexport/ObjCExportHeaderGenerator.kt @@ -582,15 +582,21 @@ abstract class ObjCExportHeaderGenerator( members: List, converter: (D) -> Set>) { members.forEach { member -> - val superMembers: Set> = (member.overriddenDescriptors as Collection) - .asSequence() - .filter { mapper.shouldBeExposed(it) } - .flatMap { converter(it).asSequence() } - .toSet() + val memberStubs = converter(member).asSequence() - this += converter(member) - .asSequence() - .filterNot { superMembers.contains(it) } + val filteredMemberStubs = if (member.kind.isReal) { + memberStubs + } else { + val superMembers: Set> = (member.overriddenDescriptors as Collection) + .asSequence() + .filter { mapper.shouldBeExposed(it) } + .flatMap { converter(it).asSequence() } + .toSet() + + memberStubs.filterNot { superMembers.contains(it) } + } + + this += filteredMemberStubs .map { rendered -> rendered.stub } .toList() }