Drop Annotations.Companion.find/getUseSiteTargetedAnnotation(s)
This commit is contained in:
@@ -23,8 +23,6 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
|||||||
import org.jetbrains.kotlin.config.MavenComparableVersion
|
import org.jetbrains.kotlin.config.MavenComparableVersion
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
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.DescriptorDerivedFromTypeAlias
|
||||||
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||||
@@ -321,22 +319,7 @@ class DeprecationResolver(
|
|||||||
getDeprecationByCoroutinesVersion(target)?.let(result::add)
|
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)
|
addDeprecationIfPresent(this)
|
||||||
addUseSiteTargetedDeprecationIfPresent(this, AnnotationUseSiteTarget.getAssociatedUseSiteTarget(this))
|
|
||||||
|
|
||||||
when (this) {
|
when (this) {
|
||||||
is TypeAliasDescriptor -> {
|
is TypeAliasDescriptor -> {
|
||||||
@@ -347,11 +330,6 @@ class DeprecationResolver(
|
|||||||
}
|
}
|
||||||
is PropertyAccessorDescriptor -> {
|
is PropertyAccessorDescriptor -> {
|
||||||
addDeprecationIfPresent(correspondingProperty)
|
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.BuiltInFictitiousFunctionClassFactory;
|
||||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor;
|
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor;
|
||||||
import org.jetbrains.kotlin.descriptors.*;
|
import org.jetbrains.kotlin.descriptors.*;
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget;
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations;
|
||||||
import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider;
|
import org.jetbrains.kotlin.descriptors.deserialization.AdditionalClassPartsProvider;
|
||||||
import org.jetbrains.kotlin.descriptors.deserialization.ClassDescriptorFactory;
|
import org.jetbrains.kotlin.descriptors.deserialization.ClassDescriptorFactory;
|
||||||
@@ -1154,7 +1153,7 @@ public abstract class KotlinBuiltIns {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isDeprecated(@NotNull DeclarationDescriptor declarationDescriptor) {
|
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) {
|
if (declarationDescriptor instanceof PropertyDescriptor) {
|
||||||
boolean isVar = ((PropertyDescriptor) declarationDescriptor).isVar();
|
boolean isVar = ((PropertyDescriptor) declarationDescriptor).isVar();
|
||||||
@@ -1173,20 +1172,4 @@ public abstract class KotlinBuiltIns {
|
|||||||
public static FqName getPrimitiveFqName(@NotNull PrimitiveType primitiveType) {
|
public static FqName getPrimitiveFqName(@NotNull PrimitiveType primitiveType) {
|
||||||
return BUILT_INS_PACKAGE_FQ_NAME.child(primitiveType.getTypeName());
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-13
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.annotations
|
package org.jetbrains.kotlin.descriptors.annotations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
|
||||||
|
|
||||||
enum class AnnotationUseSiteTarget(renderName: String? = null) {
|
enum class AnnotationUseSiteTarget(renderName: String? = null) {
|
||||||
FIELD(),
|
FIELD(),
|
||||||
FILE(),
|
FILE(),
|
||||||
@@ -30,14 +28,4 @@ enum class AnnotationUseSiteTarget(renderName: String? = null) {
|
|||||||
PROPERTY_DELEGATE_FIELD("delegate");
|
PROPERTY_DELEGATE_FIELD("delegate");
|
||||||
|
|
||||||
val renderName: String = renderName ?: name.toLowerCase()
|
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"
|
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.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
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.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
@@ -78,10 +76,7 @@ private fun KtExpression.getBundleNameByContext(): String? {
|
|||||||
val callable = resolvedCall.resultingDescriptor
|
val callable = resolvedCall.resultingDescriptor
|
||||||
|
|
||||||
if ((resolvedCall.extensionReceiver as? ExpressionReceiver)?.expression == expression) {
|
if ((resolvedCall.extensionReceiver as? ExpressionReceiver)?.expression == expression) {
|
||||||
val returnTypeAnnotations = callable.returnType?.annotations ?: return null
|
return callable.extensionReceiverParameter?.annotations?.findAnnotation(PROPERTY_KEY)?.getBundleName()
|
||||||
return Annotations
|
|
||||||
.findUseSiteTargetedAnnotation(returnTypeAnnotations, AnnotationUseSiteTarget.RECEIVER, PROPERTY_KEY)
|
|
||||||
?.getBundleName()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return resolvedCall.valueArguments.entries
|
return resolvedCall.valueArguments.entries
|
||||||
|
|||||||
Reference in New Issue
Block a user