[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 name: String = method.kotlinName
private val origin = StubOrigin.ObjCMethod(method, container) private val origin = StubOrigin.ObjCMethod(method, container)
private val modality: MemberStubModality private val modality: MemberStubModality
private val isOverride: Boolean =
container is ObjCClassOrProtocol && method.isOverride(container)
init { init {
val returnType = method.getReturnType(container.classOrProtocol) val returnType = method.getReturnType(container.classOrProtocol)
@@ -127,14 +129,8 @@ private class ObjCMethodStubBuilder(
kotlinMethodParameters = method.getKotlinParameters(context, forConstructorOrFactory = false) kotlinMethodParameters = method.getKotlinParameters(context, forConstructorOrFactory = false)
external = (container !is ObjCProtocol) external = (container !is ObjCProtocol)
modality = when (container) { modality = when (container) {
is ObjCClassOrProtocol -> { is ObjCClass -> MemberStubModality.OPEN
if (method.isOverride(container)) { is ObjCProtocol -> if (method.isOptional) MemberStubModality.OPEN else MemberStubModality.ABSTRACT
MemberStubModality.OVERRIDE
} else when (container) {
is ObjCClass -> MemberStubModality.OPEN
is ObjCProtocol -> MemberStubModality.ABSTRACT
}
}
is ObjCCategory -> MemberStubModality.FINAL is ObjCCategory -> MemberStubModality.FINAL
} }
receiver = if (container is ObjCCategory) { receiver = if (container is ObjCCategory) {
@@ -226,7 +222,9 @@ private class ObjCMethodStubBuilder(
annotations.toList(), annotations.toList(),
external, external,
receiver, receiver,
modality), modality,
emptyList(),
isOverride),
replacement replacement
) )
} }
@@ -213,7 +213,8 @@ class PropertyStub(
val modality: MemberStubModality = MemberStubModality.FINAL, val modality: MemberStubModality = MemberStubModality.FINAL,
val receiverType: StubType? = null, val receiverType: StubType? = null,
override val annotations: List<AnnotationStub> = emptyList(), override val annotations: List<AnnotationStub> = emptyList(),
val origin: StubOrigin val origin: StubOrigin,
val isOverride: Boolean = false
) : StubIrElement, AnnotationHolder { ) : StubIrElement, AnnotationHolder {
sealed class Kind { sealed class Kind {
class Val( class Val(
@@ -332,7 +333,6 @@ class FunctionParameterStub(
) : AnnotationHolder ) : AnnotationHolder
enum class MemberStubModality { enum class MemberStubModality {
OVERRIDE,
OPEN, OPEN,
FINAL, FINAL,
ABSTRACT ABSTRACT
@@ -430,7 +430,8 @@ class FunctionStub(
val external: Boolean = false, val external: Boolean = false,
val receiver: ReceiverParameterStub?, val receiver: ReceiverParameterStub?,
val modality: MemberStubModality, val modality: MemberStubModality,
val typeParameters: List<TypeParameterStub> = emptyList() val typeParameters: List<TypeParameterStub> = emptyList(),
val isOverride: Boolean = false
) : StubElementWithOrigin, FunctionalStub { ) : StubElementWithOrigin, FunctionalStub {
override fun <T, R> accept(visitor: StubIrVisitor<T, R>, data: T) = override fun <T, R> accept(visitor: StubIrVisitor<T, R>, data: T) =
@@ -214,8 +214,9 @@ internal class EnumStubBuilder(
name = "value", name = "value",
type = baseType, type = baseType,
kind = PropertyStub.Kind.Val(PropertyAccessor.Getter.GetConstructorParameter(constructorParameter)), kind = PropertyStub.Kind.Val(PropertyAccessor.Getter.GetConstructorParameter(constructorParameter)),
modality = MemberStubModality.OVERRIDE, modality = MemberStubModality.OPEN,
origin = StubOrigin.Synthetic) origin = StubOrigin.Synthetic,
isOverride = true)
val canonicalsByValue = enumDef.constants val canonicalsByValue = enumDef.constants
.groupingBy { it.value } .groupingBy { it.value }
@@ -185,8 +185,9 @@ class StubIrTextEmitter(
val parameters = element.parameters.joinToString(prefix = "(", postfix = ")") { renderFunctionParameter(it) } val parameters = element.parameters.joinToString(prefix = "(", postfix = ")") { renderFunctionParameter(it) }
val receiver = element.receiver?.let { renderFunctionReceiver(it) + "." } ?: "" val receiver = element.receiver?.let { renderFunctionReceiver(it) + "." } ?: ""
val typeParameters = renderTypeParameters(element.typeParameters) val typeParameters = renderTypeParameters(element.typeParameters)
val override = if (element.isOverride) "override " else ""
val modality = renderMemberModality(element.modality, owner) 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)) { if (!nativeBridges.isSupported(element)) {
sequenceOf( sequenceOf(
@@ -302,7 +303,8 @@ class StubIrTextEmitter(
private fun emitProperty(element: PropertyStub, owner: StubContainer?) { private fun emitProperty(element: PropertyStub, owner: StubContainer?) {
if (element in bridgeBuilderResult.excludedStubs) return 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 receiver = if (element.receiverType != null) "${renderStubType(element.receiverType)}." else ""
val name = if (owner?.isTopLevelContainer == true) { val name = if (owner?.isTopLevelContainer == true) {
getTopLevelPropertyDeclarationName(kotlinFile, element.name) getTopLevelPropertyDeclarationName(kotlinFile, element.name)
@@ -374,7 +376,6 @@ class StubIrTextEmitter(
"" ""
} else } else
when (modality) { when (modality) {
MemberStubModality.OVERRIDE -> "override "
MemberStubModality.OPEN -> "open " MemberStubModality.OPEN -> "open "
MemberStubModality.FINAL -> "final " MemberStubModality.FINAL -> "final "
MemberStubModality.ABSTRACT -> "abstract " MemberStubModality.ABSTRACT -> "abstract "