From 6f1def93668dd13ad1aecddd21e07143153ad708 Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Thu, 18 Feb 2016 15:37:00 +0300 Subject: [PATCH] isInlineOnly renamed to isInlineOnlyOrReified --- .../src/org/jetbrains/kotlin/codegen/AsmUtil.java | 2 +- .../kotlin/codegen/context/CodegenContext.java | 2 +- .../org/jetbrains/kotlin/resolve/AnnotationUtil.kt | 14 +++++++++----- .../resolve/inline/InlineAnalyzerExtension.java | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java index c861c9f4658..0874094a5a1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AsmUtil.java @@ -329,7 +329,7 @@ public class AsmUtil { DeclarationDescriptor containingDeclaration = memberDescriptor.getContainingDeclaration(); Visibility memberVisibility = memberDescriptor.getVisibility(); - if (AnnotationUtilKt.isInlineOnly(memberDescriptor)) return ACC_PRIVATE; + if (AnnotationUtilKt.isInlineOnlyOrReified(memberDescriptor)) return ACC_PRIVATE; if (memberVisibility == Visibilities.LOCAL && memberDescriptor instanceof CallableMemberDescriptor) { return ACC_PUBLIC; diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java index fe150949aed..c1f846b738e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/CodegenContext.java @@ -610,7 +610,7 @@ public abstract class CodegenContext { boolean withinInline, boolean isSuperCall ) { - if (AnnotationUtilKt.isInlineOnly(unwrappedDescriptor)) return false; + if (AnnotationUtilKt.isInlineOnlyOrReified(unwrappedDescriptor)) return false; return isSuperCall && withinInline || (accessFlag & ACC_PRIVATE) != 0 || diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationUtil.kt index d104bb61934..14801917be2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/AnnotationUtil.kt @@ -68,10 +68,14 @@ fun AnnotationDescriptor.argumentValue(parameterName: String): Any? { private val INLINE_ONLY_ANNOTATION_FQ_NAME = FqName("kotlin.internal.InlineOnly") -fun MemberDescriptor.isInlineOnly(): Boolean { +fun MemberDescriptor.isInlineOnlyOrReified(): Boolean { if (this !is FunctionDescriptor) return false - return typeParameters.any { it.isReified } || - annotations.hasAnnotation(INLINE_ONLY_ANNOTATION_FQ_NAME) && InlineUtil.isInline(this).apply { - assert(this) { "Function is not inline: ${this@isInlineOnly}"; } - } + return typeParameters.any { it.isReified } || hasInlineOnlyAnnotation() +} + +fun MemberDescriptor.hasInlineOnlyAnnotation(): Boolean { + if (this !is FunctionDescriptor) return false + return annotations.hasAnnotation(INLINE_ONLY_ANNOTATION_FQ_NAME) && InlineUtil.isInline(this).apply { + assert(this) { "Function is not inline: ${this@hasInlineOnlyAnnotation}"; } + } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.java index ac05543bb98..2ab72a594f5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/inline/InlineAnalyzerExtension.java @@ -120,7 +120,7 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz hasInlinable |= InlineUtil.containsReifiedTypeParameters(functionDescriptor); - if (!hasInlinable && !AnnotationUtilKt.isInlineOnly(functionDescriptor)) { + if (!hasInlinable && !AnnotationUtilKt.isInlineOnlyOrReified(functionDescriptor)) { KtModifierList modifierList = function.getModifierList(); PsiElement inlineModifier = modifierList == null ? null : modifierList.getModifier(KtTokens.INLINE_KEYWORD); PsiElement reportOn = inlineModifier == null ? function : inlineModifier;