diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt index a040bf7c11a..a1488f59c28 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmCachedDeclarations.kt @@ -158,19 +158,9 @@ class JvmCachedDeclarations( // is supposed to allow using `I2.DefaultImpls.f` as if it was inherited from `I1.DefaultImpls`. // The classes are not actually related and `I2.DefaultImpls.f` is not a fake override but a bridge. val defaultImplsOrigin = when { - !forCompatibilityMode && !interfaceFun.isFakeOverride -> - when { - interfaceFun.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> - interfaceFun.origin - interfaceFun.origin.isSynthetic -> - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_WITH_MOVED_RECEIVERS_SYNTHETIC - else -> - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_WITH_MOVED_RECEIVERS - } - interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC - else -> - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE + !forCompatibilityMode && !interfaceFun.isFakeOverride -> interfaceFun.origin + interfaceFun.resolveFakeOverride()!!.origin.isSynthetic -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC + else -> JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE } // Interface functions are public or private, with one exception: clone in Cloneable, which is protected. diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt index b10889cdead..22d7985a4b7 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLoweredDeclarationOrigin.kt @@ -11,9 +11,6 @@ import org.jetbrains.kotlin.ir.declarations.IrDeclarationOriginImpl interface JvmLoweredDeclarationOrigin : IrDeclarationOrigin { object CLASS_STATIC_INITIALIZER : IrDeclarationOriginImpl("CLASS_STATIC_INITIALIZER") object DEFAULT_IMPLS : IrDeclarationOriginImpl("DEFAULT_IMPLS") - object DEFAULT_IMPLS_WITH_MOVED_RECEIVERS : IrDeclarationOriginImpl("STATIC_WITH_MOVED_RECEIVERS") - object DEFAULT_IMPLS_WITH_MOVED_RECEIVERS_SYNTHETIC : - IrDeclarationOriginImpl("STATIC_WITH_MOVED_RECEIVERS_SYNTHETIC", isSynthetic = true) object DEFAULT_IMPLS_BRIDGE : IrDeclarationOriginImpl("DEFAULT_IMPLS_BRIDGE") object DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC : IrDeclarationOriginImpl("DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC", isSynthetic = true) object FIELD_FOR_OUTER_THIS : IrDeclarationOriginImpl("FIELD_FOR_OUTER_THIS") diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt index 656bc7c28c8..391a83dd1d2 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/AddContinuationLowering.kt @@ -341,7 +341,7 @@ internal fun IrFunction.suspendFunctionOriginal(): IrFunction = if (this is IrSimpleFunction && isSuspend && !isStaticInlineClassReplacement && !isOrOverridesDefaultParameterStub() && - !isDefaultImplsFunction + parentAsClass.origin != JvmLoweredDeclarationOrigin.DEFAULT_IMPLS ) attributeOwnerId as IrFunction else this @@ -354,17 +354,6 @@ private fun IrSimpleFunction.isOrOverridesDefaultParameterStub(): Boolean = { it.origin == IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER } ) -private val defaultImplsOrigins = setOf( - IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER, - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_WITH_MOVED_RECEIVERS, - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_WITH_MOVED_RECEIVERS_SYNTHETIC, - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE, - JvmLoweredDeclarationOrigin.DEFAULT_IMPLS_BRIDGE_TO_SYNTHETIC, -) - -private val IrSimpleFunction.isDefaultImplsFunction: Boolean - get() = origin in defaultImplsOrigins - private fun IrFunction.createSuspendFunctionStub(context: JvmBackendContext): IrFunction { require(this.isSuspend && this is IrSimpleFunction) return factory.buildFun {