diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt index f36e21a2040..88a3521513c 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/ObjCStubs.kt @@ -132,7 +132,7 @@ private class ObjCMethodStubBuilder( MemberStubModality.OVERRIDE } else when (container) { is ObjCClass -> MemberStubModality.OPEN - is ObjCProtocol -> MemberStubModality.OPEN + is ObjCProtocol -> MemberStubModality.ABSTRACT } } is ObjCCategory -> MemberStubModality.FINAL diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt index cda499df01f..6522f872646 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIr.kt @@ -322,7 +322,8 @@ class FunctionParameterStub( enum class MemberStubModality { OVERRIDE, OPEN, - FINAL + FINAL, + ABSTRACT } interface FunctionalStub : AnnotationHolder, StubIrElement, NativeBacked { diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrExtensions.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrExtensions.kt index e1f5a84d1c9..240985a9d2e 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrExtensions.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrExtensions.kt @@ -55,7 +55,7 @@ val StubContainer.defaultMemberModality: MemberStubModality get() = when (this) { is SimpleStubContainer -> MemberStubModality.FINAL is ClassStub.Simple -> if (this.modality == ClassStubModality.INTERFACE) { - MemberStubModality.OPEN + MemberStubModality.ABSTRACT } else { MemberStubModality.FINAL } diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt index 77485057256..6788eb15577 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrMetadataEmitter.kt @@ -116,7 +116,8 @@ private val FunctionStub.flags: Flags Flag.Function.IS_EXTERNAL, Flag.HAS_ANNOTATIONS.takeIf { annotations.isNotEmpty() }, Flag.IS_FINAL.takeIf { modality == MemberStubModality.FINAL }, - Flag.IS_OPEN.takeIf { modality == MemberStubModality.OPEN } + Flag.IS_OPEN.takeIf { modality == MemberStubModality.OPEN }, + Flag.IS_ABSTRACT.takeIf { modality == MemberStubModality.ABSTRACT } ).let { flagsOf(*it.toTypedArray()) } private val Classifier.fqNameSerialized: String diff --git a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt index 723225ae747..c8b0c4d7537 100644 --- a/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt +++ b/Interop/StubGenerator/src/main/kotlin/org/jetbrains/kotlin/native/interop/gen/StubIrTextEmitter.kt @@ -361,6 +361,7 @@ class StubIrTextEmitter( MemberStubModality.OVERRIDE -> "override " MemberStubModality.OPEN -> "open " MemberStubModality.FINAL -> "final " + MemberStubModality.ABSTRACT -> "abstract " } private fun renderVisibilityModifier(visibilityModifier: VisibilityModifier) = when (visibilityModifier) {