From eaae88133c2213e3f6e54d97bc04e667f7fb0c6e Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 7 May 2015 16:47:51 +0300 Subject: [PATCH] Minor FilteredAnnotations moved out of Java-specific code --- .../load/java/lazy/LazyJavaAnnotations.kt | 24 ------------------ .../java/lazy/types/LazyJavaTypeResolver.kt | 2 +- .../descriptors/annotations/Annotations.kt | 25 +++++++++++++++++++ 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaAnnotations.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaAnnotations.kt index 3c5ab696ad9..af921d85906 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaAnnotations.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaAnnotations.kt @@ -44,29 +44,5 @@ class LazyJavaAnnotations( override fun isEmpty() = !iterator().hasNext() } -class FilteredAnnotations( - private val delegate: Annotations, - private val fqNameFilter: (FqName) -> Boolean -) : Annotations { - override fun findAnnotation(fqName: FqName) = - if (fqNameFilter(fqName)) delegate.findAnnotation(fqName) - else null - - override fun findExternalAnnotation(fqName: FqName) = - if (fqNameFilter(fqName)) delegate.findExternalAnnotation(fqName) - else null - - override fun iterator() = delegate.asSequence() - .filter { annotation -> - val descriptor = annotation.getType().getConstructor().getDeclarationDescriptor() - descriptor != null && DescriptorUtils.getFqName(descriptor).let { fqName -> - fqName.isSafe() && fqNameFilter(fqName.toSafe()) - } - } - .iterator() - - override fun isEmpty() = !iterator().hasNext() -} - fun LazyJavaResolverContext.resolveAnnotations(annotationsOwner: JavaAnnotationOwner): Annotations = LazyJavaAnnotations(this, annotationsOwner) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/LazyJavaTypeResolver.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/LazyJavaTypeResolver.kt index 3d0e1db82c0..cbe1b646dcc 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/LazyJavaTypeResolver.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/types/LazyJavaTypeResolver.kt @@ -20,10 +20,10 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations +import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations import org.jetbrains.kotlin.load.java.JvmAnnotationNames.* import org.jetbrains.kotlin.load.java.components.TypeUsage import org.jetbrains.kotlin.load.java.components.TypeUsage.* -import org.jetbrains.kotlin.load.java.lazy.FilteredAnnotations import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.lazy.TypeParameterResolver import org.jetbrains.kotlin.load.java.lazy.types.JavaTypeFlexibility.FLEXIBLE_LOWER_BOUND 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 c008c9559d3..6396fa9d4e7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/Annotations.kt @@ -17,6 +17,7 @@ package org.jetbrains.kotlin.descriptors.annotations import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.resolve.DescriptorUtils public trait Annotations : Iterable { @@ -40,3 +41,27 @@ public trait Annotations : Iterable { } } } + +class FilteredAnnotations( + private val delegate: Annotations, + private val fqNameFilter: (FqName) -> Boolean +) : Annotations { + override fun findAnnotation(fqName: FqName) = + if (fqNameFilter(fqName)) delegate.findAnnotation(fqName) + else null + + override fun findExternalAnnotation(fqName: FqName) = + if (fqNameFilter(fqName)) delegate.findExternalAnnotation(fqName) + else null + + override fun iterator() = delegate.sequence() + .filter { annotation -> + val descriptor = annotation.getType().getConstructor().getDeclarationDescriptor() + descriptor != null && DescriptorUtils.getFqName(descriptor).let { fqName -> + fqName.isSafe() && fqNameFilter(fqName.toSafe()) + } + } + .iterator() + + override fun isEmpty() = !iterator().hasNext() +}