[Interop][StubIR] Add "abstract" member stub modality

This commit is contained in:
Sergey Bogolepov
2019-12-02 11:41:36 +07:00
committed by Sergey Bogolepov
parent af5f07de17
commit f10965cbec
5 changed files with 7 additions and 4 deletions
@@ -132,7 +132,7 @@ private class ObjCMethodStubBuilder(
MemberStubModality.OVERRIDE MemberStubModality.OVERRIDE
} else when (container) { } else when (container) {
is ObjCClass -> MemberStubModality.OPEN is ObjCClass -> MemberStubModality.OPEN
is ObjCProtocol -> MemberStubModality.OPEN is ObjCProtocol -> MemberStubModality.ABSTRACT
} }
} }
is ObjCCategory -> MemberStubModality.FINAL is ObjCCategory -> MemberStubModality.FINAL
@@ -322,7 +322,8 @@ class FunctionParameterStub(
enum class MemberStubModality { enum class MemberStubModality {
OVERRIDE, OVERRIDE,
OPEN, OPEN,
FINAL FINAL,
ABSTRACT
} }
interface FunctionalStub : AnnotationHolder, StubIrElement, NativeBacked { interface FunctionalStub : AnnotationHolder, StubIrElement, NativeBacked {
@@ -55,7 +55,7 @@ val StubContainer.defaultMemberModality: MemberStubModality
get() = when (this) { get() = when (this) {
is SimpleStubContainer -> MemberStubModality.FINAL is SimpleStubContainer -> MemberStubModality.FINAL
is ClassStub.Simple -> if (this.modality == ClassStubModality.INTERFACE) { is ClassStub.Simple -> if (this.modality == ClassStubModality.INTERFACE) {
MemberStubModality.OPEN MemberStubModality.ABSTRACT
} else { } else {
MemberStubModality.FINAL MemberStubModality.FINAL
} }
@@ -116,7 +116,8 @@ private val FunctionStub.flags: Flags
Flag.Function.IS_EXTERNAL, Flag.Function.IS_EXTERNAL,
Flag.HAS_ANNOTATIONS.takeIf { annotations.isNotEmpty() }, Flag.HAS_ANNOTATIONS.takeIf { annotations.isNotEmpty() },
Flag.IS_FINAL.takeIf { modality == MemberStubModality.FINAL }, 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()) } ).let { flagsOf(*it.toTypedArray()) }
private val Classifier.fqNameSerialized: String private val Classifier.fqNameSerialized: String
@@ -361,6 +361,7 @@ class StubIrTextEmitter(
MemberStubModality.OVERRIDE -> "override " MemberStubModality.OVERRIDE -> "override "
MemberStubModality.OPEN -> "open " MemberStubModality.OPEN -> "open "
MemberStubModality.FINAL -> "final " MemberStubModality.FINAL -> "final "
MemberStubModality.ABSTRACT -> "abstract "
} }
private fun renderVisibilityModifier(visibilityModifier: VisibilityModifier) = when (visibilityModifier) { private fun renderVisibilityModifier(visibilityModifier: VisibilityModifier) = when (visibilityModifier) {