From 385d522d278c5a28e5a7d4975f155fcfbc3285e6 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 30 Jun 2020 13:46:36 +0300 Subject: [PATCH] JVM_IR: do not use descriptor in isCompiledToJvmDefault --- .../src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt index a0d2831ff84..bf24afb4a31 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/IrUtils.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.builders.IrBuilderWithScope import org.jetbrains.kotlin.ir.builders.Scope import org.jetbrains.kotlin.ir.builders.declarations.buildProperty import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.declarations.lazy.IrLazyClass import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl @@ -44,7 +45,6 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_DEFAULT_FQ_NAME import org.jetbrains.kotlin.resolve.jvm.annotations.JVM_DEFAULT_NO_COMPATIBILITY_FQ_NAME -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor /** * Perform as much type erasure as is significant for JVM signature generation. @@ -158,9 +158,10 @@ fun IrSimpleFunction.isCompiledToJvmDefault(jvmDefaultMode: JvmDefaultMode): Boo } if (origin == IrDeclarationOrigin.IR_EXTERNAL_JAVA_DECLARATION_STUB) return false if (hasJvmDefault()) return true - val parentDescriptor = propertyIfAccessor.parentAsClass.descriptor - if (parentDescriptor !is DeserializedClassDescriptor) return jvmDefaultMode.forAllMethodsWithBody - return JvmProtoBufUtil.isNewPlaceForBodyGeneration(parentDescriptor.classProto) + (parentAsClass as? IrLazyClass)?.classProto?.let { + return JvmProtoBufUtil.isNewPlaceForBodyGeneration(it) + } + return jvmDefaultMode.forAllMethodsWithBody } fun IrFunction.hasJvmDefault(): Boolean = propertyIfAccessor.hasAnnotation(JVM_DEFAULT_FQ_NAME)