From cead418d506d2ef22d64c8cee50529b0a97bb8f0 Mon Sep 17 00:00:00 2001 From: Svyatoslav Scherbina Date: Mon, 28 Jan 2019 17:23:49 +0300 Subject: [PATCH] Always include declared class methods to framework header --- .../objcexport/ObjCExportHeaderGenerator.kt | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) 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() }