[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:
committed by
Sergey Bogolepov
parent
ab82a02be8
commit
3a4620cd33
+7
-9
@@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -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) =
|
||||||
|
|||||||
+3
-2
@@ -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 }
|
||||||
|
|||||||
+4
-3
@@ -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 "
|
||||||
|
|||||||
Reference in New Issue
Block a user