From 83fbabd628753e110d32500cf9b530be968a302a Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 14 Aug 2018 18:06:22 +0200 Subject: [PATCH] Drop Annotations.Companion.find/getUseSiteTargetedAnnotation(s) --- .../kotlin/resolve/deprecationUtil.kt | 22 ------------------- .../kotlin/builtins/KotlinBuiltIns.java | 19 +--------------- .../annotations/AnnotationUseSiteTarget.kt | 14 +----------- .../descriptors/annotations/Annotations.kt | 10 --------- .../idea/properties/referenceProviders.kt | 7 +----- 5 files changed, 3 insertions(+), 69 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt index 9f0c6daa003..31d6fad5f07 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/deprecationUtil.kt @@ -23,8 +23,6 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.MavenComparableVersion import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.descriptors.impl.DescriptorDerivedFromTypeAlias import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor import org.jetbrains.kotlin.diagnostics.Diagnostic @@ -321,22 +319,7 @@ class DeprecationResolver( getDeprecationByCoroutinesVersion(target)?.let(result::add) } - fun addUseSiteTargetedDeprecationIfPresent(annotatedDescriptor: DeclarationDescriptor, useSiteTarget: AnnotationUseSiteTarget?) { - if (useSiteTarget != null) { - val annotation = Annotations.findUseSiteTargetedAnnotation( - annotatedDescriptor.annotations, - useSiteTarget, - KotlinBuiltIns.FQ_NAMES.deprecated - ) - ?: Annotations.findUseSiteTargetedAnnotation(annotatedDescriptor.annotations, useSiteTarget, JAVA_DEPRECATED) - if (annotation != null) { - result.add(DeprecatedByAnnotation(annotation, this)) - } - } - } - addDeprecationIfPresent(this) - addUseSiteTargetedDeprecationIfPresent(this, AnnotationUseSiteTarget.getAssociatedUseSiteTarget(this)) when (this) { is TypeAliasDescriptor -> { @@ -347,11 +330,6 @@ class DeprecationResolver( } is PropertyAccessorDescriptor -> { addDeprecationIfPresent(correspondingProperty) - - addUseSiteTargetedDeprecationIfPresent( - correspondingProperty, - if (this is PropertyGetterDescriptor) AnnotationUseSiteTarget.PROPERTY_GETTER else AnnotationUseSiteTarget.PROPERTY_SETTER - ) } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java index 83036710439..15f92fa2268 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/kotlin/builtins/KotlinBuiltIns.java @@ -13,7 +13,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.builtins.functions.BuiltInFictitiousFunctionClassFactory; import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor; import org.jetbrains.kotlin.descriptors.*; -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget; import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider; import org.jetbrains.kotlin.descriptors.deserialization.ClassDescriptorFactory; @@ -1154,7 +1153,7 @@ public abstract class KotlinBuiltIns { } public static boolean isDeprecated(@NotNull DeclarationDescriptor declarationDescriptor) { - if (containsAnnotation(declarationDescriptor, FQ_NAMES.deprecated)) return true; + if (declarationDescriptor.getOriginal().getAnnotations().hasAnnotation(FQ_NAMES.deprecated)) return true; if (declarationDescriptor instanceof PropertyDescriptor) { boolean isVar = ((PropertyDescriptor) declarationDescriptor).isVar(); @@ -1173,20 +1172,4 @@ public abstract class KotlinBuiltIns { public static FqName getPrimitiveFqName(@NotNull PrimitiveType primitiveType) { return BUILT_INS_PACKAGE_FQ_NAME.child(primitiveType.getTypeName()); } - - private static boolean containsAnnotation(DeclarationDescriptor descriptor, FqName annotationClassFqName) { - DeclarationDescriptor original = descriptor.getOriginal(); - Annotations annotations = original.getAnnotations(); - - if (annotations.findAnnotation(annotationClassFqName) != null) return true; - - AnnotationUseSiteTarget associatedUseSiteTarget = AnnotationUseSiteTarget.Companion.getAssociatedUseSiteTarget(descriptor); - if (associatedUseSiteTarget != null) { - if (Annotations.Companion.findUseSiteTargetedAnnotation(annotations, associatedUseSiteTarget, annotationClassFqName) != null) { - return true; - } - } - - return false; - } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt index 686010e2934..006bf819be8 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationUseSiteTarget.kt @@ -16,8 +16,6 @@ package org.jetbrains.kotlin.descriptors.annotations -import org.jetbrains.kotlin.descriptors.* - enum class AnnotationUseSiteTarget(renderName: String? = null) { FIELD(), FILE(), @@ -30,14 +28,4 @@ enum class AnnotationUseSiteTarget(renderName: String? = null) { PROPERTY_DELEGATE_FIELD("delegate"); val renderName: String = renderName ?: name.toLowerCase() - - companion object { - fun getAssociatedUseSiteTarget(descriptor: DeclarationDescriptor): AnnotationUseSiteTarget? = when (descriptor) { - is PropertyDescriptor -> PROPERTY - is ValueParameterDescriptor -> CONSTRUCTOR_PARAMETER - is PropertyGetterDescriptor -> PROPERTY_GETTER - is PropertySetterDescriptor -> PROPERTY_SETTER - else -> null - } - } -} \ No newline at end of file +} diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt index c58de94a06f..a5174550d4e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt @@ -57,16 +57,6 @@ interface Annotations : Iterable { override fun toString() = "EMPTY" } - - fun findUseSiteTargetedAnnotation(annotations: Annotations, target: AnnotationUseSiteTarget, fqName: FqName): AnnotationDescriptor? { - return getUseSiteTargetedAnnotations(annotations, target).firstOrNull { it.fqName == fqName } - } - - private fun getUseSiteTargetedAnnotations(annotations: Annotations, target: AnnotationUseSiteTarget): List { - return annotations.getUseSiteTargetedAnnotations().mapNotNull { (annotation, annotationTarget) -> - annotation.takeIf { target == annotationTarget } - } - } } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/properties/referenceProviders.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/properties/referenceProviders.kt index 1215540e3eb..15c1f1c0f3c 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/properties/referenceProviders.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/properties/referenceProviders.kt @@ -29,8 +29,6 @@ import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny @@ -78,10 +76,7 @@ private fun KtExpression.getBundleNameByContext(): String? { val callable = resolvedCall.resultingDescriptor if ((resolvedCall.extensionReceiver as? ExpressionReceiver)?.expression == expression) { - val returnTypeAnnotations = callable.returnType?.annotations ?: return null - return Annotations - .findUseSiteTargetedAnnotation(returnTypeAnnotations, AnnotationUseSiteTarget.RECEIVER, PROPERTY_KEY) - ?.getBundleName() + return callable.extensionReceiverParameter?.annotations?.findAnnotation(PROPERTY_KEY)?.getBundleName() } return resolvedCall.valueArguments.entries