From 815ff3c86060339f98fd352c170fb478fd0341b4 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 10 Jul 2019 21:13:25 +0200 Subject: [PATCH] JVM IR: don't generate ACC_FINAL on DefaultImpls methods To replicate behavior of old backend --- .../src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt | 3 ++- .../kotlin/backend/jvm/descriptors/JvmDeclarationFactory.kt | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index 0f9021ab18f..65d132a97e2 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -515,6 +515,7 @@ fun createStaticFunctionWithReceivers( oldFunction: IrFunction, dispatchReceiverType: IrType? = oldFunction.dispatchReceiverParameter?.type, origin: IrDeclarationOrigin = oldFunction.origin, + modality: Modality = Modality.FINAL, copyBody: Boolean = true ): IrSimpleFunction { val descriptor = WrappedSimpleFunctionDescriptor(Annotations.EMPTY, oldFunction.descriptor.source) @@ -524,7 +525,7 @@ fun createStaticFunctionWithReceivers( IrSimpleFunctionSymbolImpl(descriptor), name, oldFunction.visibility, - Modality.FINAL, + modality, oldFunction.returnType, isInline = oldFunction.isInline, isExternal = false, isTailrec = false, isSuspend = false 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 c7ac94809d0..ff9aefc04f3 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 @@ -151,7 +151,9 @@ class JvmDeclarationFactory( interfaceFun.origin != IrDeclarationOrigin.FAKE_OVERRIDE -> interfaceFun.origin interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC else -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE - } + }, + // Old backend doesn't generate ACC_FINAL on DefaultImpls methods. + modality = Modality.OPEN ) } }