[StubIr] remove OVERRIDE from modalities

1. CEnum.value should be declared as open override in enums.
2. It is just incorrect.
This commit is contained in:
Sergey Bogolepov
2020-01-27 12:54:17 +07:00
committed by Sergey Bogolepov
parent ab82a02be8
commit 3a4620cd33
4 changed files with 18 additions and 17 deletions
@@ -109,6 +109,8 @@ private class ObjCMethodStubBuilder(
private val name: String = method.kotlinName
private val origin = StubOrigin.ObjCMethod(method, container)
private val modality: MemberStubModality
private val isOverride: Boolean =
container is ObjCClassOrProtocol && method.isOverride(container)
init {
val returnType = method.getReturnType(container.classOrProtocol)
@@ -127,14 +129,8 @@ private class ObjCMethodStubBuilder(
kotlinMethodParameters = method.getKotlinParameters(context, forConstructorOrFactory = false)
external = (container !is ObjCProtocol)
modality = when (container) {
is ObjCClassOrProtocol -> {
if (method.isOverride(container)) {
MemberStubModality.OVERRIDE
} else when (container) {
is ObjCClass -> MemberStubModality.OPEN
is ObjCProtocol -> MemberStubModality.ABSTRACT
}
}
is ObjCClass -> MemberStubModality.OPEN
is ObjCProtocol -> if (method.isOptional) MemberStubModality.OPEN else MemberStubModality.ABSTRACT
is ObjCCategory -> MemberStubModality.FINAL
}
receiver = if (container is ObjCCategory) {
@@ -226,7 +222,9 @@ private class ObjCMethodStubBuilder(
annotations.toList(),
external,
receiver,
modality),
modality,
emptyList(),
isOverride),
replacement
)
}
@@ -213,7 +213,8 @@ class PropertyStub(
val modality: MemberStubModality = MemberStubModality.FINAL,
val receiverType: StubType? = null,
override val annotations: List<AnnotationStub> = emptyList(),
val origin: StubOrigin
val origin: StubOrigin,
val isOverride: Boolean = false
) : StubIrElement, AnnotationHolder {
sealed class Kind {
class Val(
@@ -332,7 +333,6 @@ class FunctionParameterStub(
) : AnnotationHolder
enum class MemberStubModality {
OVERRIDE,
OPEN,
FINAL,
ABSTRACT
@@ -430,7 +430,8 @@ class FunctionStub(
val external: Boolean = false,
val receiver: ReceiverParameterStub?,
val modality: MemberStubModality,
val typeParameters: List<TypeParameterStub> = emptyList()
val typeParameters: List<TypeParameterStub> = emptyList(),
val isOverride: Boolean = false
) : StubElementWithOrigin, FunctionalStub {
override fun <T, R> accept(visitor: StubIrVisitor<T, R>, data: T) =
@@ -214,8 +214,9 @@ internal class EnumStubBuilder(
name = "value",
type = baseType,
kind = PropertyStub.Kind.Val(PropertyAccessor.Getter.GetConstructorParameter(constructorParameter)),
modality = MemberStubModality.OVERRIDE,
origin = StubOrigin.Synthetic)
modality = MemberStubModality.OPEN,
origin = StubOrigin.Synthetic,
isOverride = true)
val canonicalsByValue = enumDef.constants
.groupingBy { it.value }
@@ -185,8 +185,9 @@ class StubIrTextEmitter(
val parameters = element.parameters.joinToString(prefix = "(", postfix = ")") { renderFunctionParameter(it) }
val receiver = element.receiver?.let { renderFunctionReceiver(it) + "." } ?: ""
val typeParameters = renderTypeParameters(element.typeParameters)
val override = if (element.isOverride) "override " else ""
val modality = renderMemberModality(element.modality, owner)
"${modality}fun$typeParameters $receiver${element.name.asSimpleName()}$parameters: ${renderStubType(element.returnType)}"
"$override${modality}fun$typeParameters $receiver${element.name.asSimpleName()}$parameters: ${renderStubType(element.returnType)}"
}
if (!nativeBridges.isSupported(element)) {
sequenceOf(
@@ -302,7 +303,8 @@ class StubIrTextEmitter(
private fun emitProperty(element: PropertyStub, owner: StubContainer?) {
if (element in bridgeBuilderResult.excludedStubs) return
val modality = renderMemberModality(element.modality, owner)
val override = if (element.isOverride) "override " else ""
val modality = "$override${renderMemberModality(element.modality, owner)}"
val receiver = if (element.receiverType != null) "${renderStubType(element.receiverType)}." else ""
val name = if (owner?.isTopLevelContainer == true) {
getTopLevelPropertyDeclarationName(kotlinFile, element.name)
@@ -374,7 +376,6 @@ class StubIrTextEmitter(
""
} else
when (modality) {
MemberStubModality.OVERRIDE -> "override "
MemberStubModality.OPEN -> "open "
MemberStubModality.FINAL -> "final "
MemberStubModality.ABSTRACT -> "abstract "