isInlineOnly renamed to isInlineOnlyOrReified
This commit is contained in:
@@ -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}"; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user