isInlineOnly renamed to isInlineOnlyOrReified

This commit is contained in:
Michael Bogdanov
2016-02-18 15:37:00 +03:00
parent 30c2abba3c
commit 6f1def9366
4 changed files with 12 additions and 8 deletions
@@ -329,7 +329,7 @@ public class AsmUtil {
DeclarationDescriptor containingDeclaration = memberDescriptor.getContainingDeclaration(); DeclarationDescriptor containingDeclaration = memberDescriptor.getContainingDeclaration();
Visibility memberVisibility = memberDescriptor.getVisibility(); 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) { if (memberVisibility == Visibilities.LOCAL && memberDescriptor instanceof CallableMemberDescriptor) {
return ACC_PUBLIC; return ACC_PUBLIC;
@@ -610,7 +610,7 @@ public abstract class CodegenContext<T extends DeclarationDescriptor> {
boolean withinInline, boolean withinInline,
boolean isSuperCall boolean isSuperCall
) { ) {
if (AnnotationUtilKt.isInlineOnly(unwrappedDescriptor)) return false; if (AnnotationUtilKt.isInlineOnlyOrReified(unwrappedDescriptor)) return false;
return isSuperCall && withinInline || return isSuperCall && withinInline ||
(accessFlag & ACC_PRIVATE) != 0 || (accessFlag & ACC_PRIVATE) != 0 ||
@@ -68,10 +68,14 @@ fun AnnotationDescriptor.argumentValue(parameterName: String): Any? {
private val INLINE_ONLY_ANNOTATION_FQ_NAME = FqName("kotlin.internal.InlineOnly") 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 if (this !is FunctionDescriptor) return false
return typeParameters.any { it.isReified } || return typeParameters.any { it.isReified } || hasInlineOnlyAnnotation()
annotations.hasAnnotation(INLINE_ONLY_ANNOTATION_FQ_NAME) && InlineUtil.isInline(this).apply { }
assert(this) { "Function is not inline: ${this@isInlineOnly}"; }
} 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}"; }
}
} }
@@ -120,7 +120,7 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz
hasInlinable |= InlineUtil.containsReifiedTypeParameters(functionDescriptor); hasInlinable |= InlineUtil.containsReifiedTypeParameters(functionDescriptor);
if (!hasInlinable && !AnnotationUtilKt.isInlineOnly(functionDescriptor)) { if (!hasInlinable && !AnnotationUtilKt.isInlineOnlyOrReified(functionDescriptor)) {
KtModifierList modifierList = function.getModifierList(); KtModifierList modifierList = function.getModifierList();
PsiElement inlineModifier = modifierList == null ? null : modifierList.getModifier(KtTokens.INLINE_KEYWORD); PsiElement inlineModifier = modifierList == null ? null : modifierList.getModifier(KtTokens.INLINE_KEYWORD);
PsiElement reportOn = inlineModifier == null ? function : inlineModifier; PsiElement reportOn = inlineModifier == null ? function : inlineModifier;