From e2106d4d080ad0216e0add363a5cf918f98ed3d0 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 26 Feb 2019 11:16:01 +0100 Subject: [PATCH] Do not assert that function is inline in MemberDescriptor.isInlineOnly This is a more accurate fix of the problem described in 946acd2416 --- .../org/jetbrains/kotlin/resolve/inline/inlineOnly.kt | 9 +++------ .../boxInline/smap/inlineOnly/noSmapWithProperty.kt | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/inlineOnly.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/inlineOnly.kt index eead4ea01ec..94e681cc731 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/inlineOnly.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/inlineOnly.kt @@ -21,12 +21,9 @@ fun MemberDescriptor.isEffectivelyInlineOnly(): Boolean = isInlineOnlyOrReifiable() || (this is FunctionDescriptor && isSuspend && isInline && (valueParameters.any { it.isCrossinline } || visibility == Visibilities.PRIVATE)) -fun MemberDescriptor.isInlineOnly(): Boolean { - if (this !is FunctionDescriptor || - !(hasInlineOnlyAnnotation() || DescriptorUtils.getDirectMember(this).hasInlineOnlyAnnotation())) return false - assert(isInline) { "Function is not inline: $this" } - return true -} +fun MemberDescriptor.isInlineOnly(): Boolean = + this is FunctionDescriptor && isInline && + (hasInlineOnlyAnnotation() || DescriptorUtils.getDirectMember(this).hasInlineOnlyAnnotation()) private fun CallableMemberDescriptor.isReifiable() = typeParameters.any { it.isReified } diff --git a/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmapWithProperty.kt b/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmapWithProperty.kt index f5f07616e14..d3f2d9bf1f4 100644 --- a/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmapWithProperty.kt +++ b/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmapWithProperty.kt @@ -1,6 +1,6 @@ -// IGNORE_BACKEND: JVM_IR // FILE: 1.kt // WITH_RUNTIME + package test inline fun stub() {