Drop Annotations.Companion.find/getUseSiteTargetedAnnotation(s)

This commit is contained in:
Alexander Udalov
2018-08-14 18:06:22 +02:00
parent 7271995ff0
commit 83fbabd628
5 changed files with 3 additions and 69 deletions
@@ -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
)
}
}
@@ -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;
}
}
@@ -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
}
}
}
}
@@ -57,16 +57,6 @@ interface Annotations : Iterable<AnnotationDescriptor> {
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<AnnotationDescriptor> {
return annotations.getUseSiteTargetedAnnotations().mapNotNull { (annotation, annotationTarget) ->
annotation.takeIf { target == annotationTarget }
}
}
}
}
@@ -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