From 5831b08a6e3352c161bbe5881dfa6dd4f2048f56 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 22 Oct 2019 16:23:12 +0300 Subject: [PATCH] JVM_IR: IrSimpleFunction.isFakeOverride --- .../kotlin/backend/jvm/codegen/CoroutineCodegen.kt | 3 ++- .../backend/jvm/descriptors/JvmDeclarationFactory.kt | 3 ++- .../jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt | 9 ++++++--- .../backend/jvm/lower/JvmOverloadsAnnotationLowering.kt | 3 ++- .../backend/jvm/lower/JvmStaticAnnotationLowering.kt | 6 ++++-- .../kotlin/backend/jvm/lower/ToArrayLowering.kt | 6 ++++-- 6 files changed, 20 insertions(+), 10 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/CoroutineCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/CoroutineCodegen.kt index ddec4e6013a..e6b8dc80c38 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/CoroutineCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/CoroutineCodegen.kt @@ -146,7 +146,8 @@ private fun IrFunction.suspendFunctionView(context: JvmBackendContext): IrFuncti return IrFunctionImpl( startOffset, endOffset, JvmLoweredDeclarationOrigin.SUSPEND_FUNCTION_VIEW, IrSimpleFunctionSymbolImpl(descriptor), name, visibility, modality, context.irBuiltIns.anyNType, - isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect + isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, + isFakeOverride = false ).also { descriptor.bind(it) it.parent = parent diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt index 9a6cad9cb37..ea64a47dc3f 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt @@ -200,7 +200,8 @@ class JvmDeclarationFactory( isExternal = false, isTailrec = false, isSuspend = isSuspend, - isExpect = false + isExpect = false, + isFakeOverride = false ).apply { descriptor.bind(this) parent = irClass diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt index 6cb36b96186..a07165626f4 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/BridgeLowering.kt @@ -205,7 +205,8 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass IrSimpleFunctionSymbolImpl(newDescriptor), newName, visibility, modality, returnType, - isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect + isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).apply { newDescriptor.bind(this) parent = this@copyRenamingTo.parent @@ -239,7 +240,8 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass isExternal = false, isTailrec = false, isSuspend = signatureFunction.isSuspend, - isExpect = false + isExpect = false, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).apply { descriptor.bind(this) parent = irClass @@ -314,7 +316,8 @@ private class BridgeLowering(val context: JvmBackendContext) : ClassLoweringPass IrSimpleFunctionSymbolImpl(wrappedDescriptor), Name.identifier(getJvmName()), visibility, modality, returnType, - isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect + isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, + isFakeOverride = newOrigin == IrDeclarationOrigin.FAKE_OVERRIDE ).apply { wrappedDescriptor.bind(this) parent = this@orphanedCopy.parent diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt index d7a84fea24e..97424268101 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmOverloadsAnnotationLowering.kt @@ -149,7 +149,8 @@ private class JvmOverloadsAnnotationLowering(val context: JvmBackendContext) : C isExternal = false, isTailrec = false, isSuspend = oldFunction.isSuspend, - isExpect = false + isExpect = false, + isFakeOverride = false ).apply { descriptor.bind(this) } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStaticAnnotationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStaticAnnotationLowering.kt index 2b1a2aa7a2e..95ee4923b63 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStaticAnnotationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/JvmStaticAnnotationLowering.kt @@ -112,7 +112,8 @@ private class CompanionObjectJvmStaticLowering(val context: JvmBackendContext) : isExternal = false, isTailrec = false, isSuspend = target.isSuspend, - isExpect = false + isExpect = false, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).apply { descriptor.bind(this) parent = irClass @@ -232,7 +233,8 @@ private class MakeCallsStatic( IrSimpleFunctionSymbolImpl(newDescriptor), name, visibility, modality, returnType, - isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect + isInline = isInline, isExternal = isExternal, isTailrec = isTailrec, isSuspend = isSuspend, isExpect = isExpect, + isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE ).also { newDescriptor.bind(it) it.parent = parent diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ToArrayLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ToArrayLowering.kt index cd3ee41db4e..36fbd89031e 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ToArrayLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ToArrayLowering.kt @@ -84,7 +84,8 @@ private class ToArrayLowering(private val context: JvmBackendContext) : ClassLow isExternal = false, isTailrec = false, isSuspend = false, - isExpect = false + isExpect = false, + isFakeOverride = false ) functionDescriptor.bind(irFunction) irFunction.parent = irClass @@ -154,7 +155,8 @@ private class ToArrayLowering(private val context: JvmBackendContext) : ClassLow isExternal = false, isTailrec = false, isSuspend = false, - isExpect = false + isExpect = false, + isFakeOverride = false ) functionDescriptor.bind(irFunction) irFunction.parent = irClass