From 7d10cfa4a53bd2e83dc6f8ec007abcd8a2832e68 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 22 Jan 2014 18:05:21 +0400 Subject: [PATCH] Annotations.findAnnotation() added --- .../descriptors/annotations/Annotations.java | 11 +++++++++++ .../annotations/AnnotationsImpl.java | 17 +++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/Annotations.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/Annotations.java index f1a58f8c1d0..76ee856044c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/Annotations.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/Annotations.java @@ -17,6 +17,8 @@ package org.jetbrains.jet.lang.descriptors.annotations; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Collections; import java.util.Iterator; @@ -28,6 +30,12 @@ public interface Annotations extends Iterable { return true; } + @Nullable + @Override + public AnnotationDescriptor findAnnotation(@NotNull FqName fqName) { + return null; + } + @NotNull @Override public Iterator iterator() { @@ -36,4 +44,7 @@ public interface Annotations extends Iterable { }; boolean isEmpty(); + + @Nullable + AnnotationDescriptor findAnnotation(@NotNull FqName fqName); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationsImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationsImpl.java index f65ac1140cf..dd8c6d68fc5 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationsImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/annotations/AnnotationsImpl.java @@ -17,6 +17,11 @@ package org.jetbrains.jet.lang.descriptors.annotations; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.descriptors.ClassDescriptor; +import org.jetbrains.jet.lang.descriptors.ClassifierDescriptor; +import org.jetbrains.jet.lang.resolve.DescriptorUtils; +import org.jetbrains.jet.lang.resolve.name.FqName; import java.util.Iterator; import java.util.List; @@ -38,6 +43,18 @@ public class AnnotationsImpl implements Annotations { return getAnnotationDescriptors().isEmpty(); } + @Nullable + @Override + public AnnotationDescriptor findAnnotation(@NotNull FqName fqName) { + for (AnnotationDescriptor annotation : annotations) { + ClassifierDescriptor descriptor = annotation.getType().getConstructor().getDeclarationDescriptor(); + if (descriptor instanceof ClassDescriptor && fqName.toUnsafe().equals(DescriptorUtils.getFqName(descriptor))) { + return annotation; + } + } + return null; + } + @NotNull @Override public Iterator iterator() {