Add default implementation for Annotations.findAnnotation
This commit is contained in:
-3
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotatedImpl
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
|
|
||||||
interface WrappedAnnotated : Annotated {
|
interface WrappedAnnotated : Annotated {
|
||||||
val originalAnnotated: Annotated
|
val originalAnnotated: Annotated
|
||||||
@@ -34,8 +33,6 @@ class AnnotatedWithOnlyTargetedAnnotations(original: Annotated) : Annotated {
|
|||||||
private class UseSiteTargetedAnnotations(private val additionalAnnotations: Annotations) : Annotations {
|
private class UseSiteTargetedAnnotations(private val additionalAnnotations: Annotations) : Annotations {
|
||||||
override fun isEmpty() = true
|
override fun isEmpty() = true
|
||||||
|
|
||||||
override fun findAnnotation(fqName: FqName) = null
|
|
||||||
|
|
||||||
override fun getUseSiteTargetedAnnotations() = getAdditionalTargetedAnnotations()
|
override fun getUseSiteTargetedAnnotations() = getAdditionalTargetedAnnotations()
|
||||||
|
|
||||||
override fun getAllAnnotations() = getAdditionalTargetedAnnotations()
|
override fun getAllAnnotations() = getAdditionalTargetedAnnotations()
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ 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.AnnotationWithTarget
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||||
import org.jetbrains.kotlin.resolve.AnnotationResolver
|
import org.jetbrains.kotlin.resolve.AnnotationResolver
|
||||||
@@ -64,8 +63,6 @@ class LazyAnnotations(
|
|||||||
AnnotationWithTarget(descriptor, target)
|
AnnotationWithTarget(descriptor, target)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun findAnnotation(fqName: FqName): AnnotationDescriptor? = firstOrNull { it.fqName == fqName }
|
|
||||||
|
|
||||||
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> {
|
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> {
|
||||||
return annotationEntries
|
return annotationEntries
|
||||||
.mapNotNull {
|
.mapNotNull {
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ interface Annotations : Iterable<AnnotationDescriptor> {
|
|||||||
|
|
||||||
fun isEmpty(): Boolean
|
fun isEmpty(): Boolean
|
||||||
|
|
||||||
fun findAnnotation(fqName: FqName): AnnotationDescriptor?
|
fun findAnnotation(fqName: FqName): AnnotationDescriptor? = firstOrNull { it.fqName == fqName }
|
||||||
|
|
||||||
fun hasAnnotation(fqName: FqName) = findAnnotation(fqName) != null
|
fun hasAnnotation(fqName: FqName): Boolean = findAnnotation(fqName) != null
|
||||||
|
|
||||||
fun findExternalAnnotation(fqName: FqName): AnnotationDescriptor? = null
|
fun findExternalAnnotation(fqName: FqName): AnnotationDescriptor? = null
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.descriptors.annotations
|
package org.jetbrains.kotlin.descriptors.annotations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
|
|
||||||
class AnnotationsImpl : Annotations {
|
class AnnotationsImpl : Annotations {
|
||||||
private val annotations: List<AnnotationDescriptor>
|
private val annotations: List<AnnotationDescriptor>
|
||||||
private val targetedAnnotations: List<AnnotationWithTarget>
|
private val targetedAnnotations: List<AnnotationWithTarget>
|
||||||
@@ -38,8 +36,6 @@ class AnnotationsImpl : Annotations {
|
|||||||
|
|
||||||
override fun isEmpty() = targetedAnnotations.isEmpty()
|
override fun isEmpty() = targetedAnnotations.isEmpty()
|
||||||
|
|
||||||
override fun findAnnotation(fqName: FqName) = annotations.firstOrNull { it.fqName == fqName }
|
|
||||||
|
|
||||||
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> {
|
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> {
|
||||||
return targetedAnnotations
|
return targetedAnnotations
|
||||||
.filter { it.target != null }
|
.filter { it.target != null }
|
||||||
|
|||||||
@@ -58,14 +58,12 @@ fun TypeParameterDescriptor.hasOnlyInputTypesAnnotation(): Boolean = annotations
|
|||||||
fun getExactInAnnotations(): Annotations = AnnotationsWithOnly(EXACT_ANNOTATION_FQ_NAME)
|
fun getExactInAnnotations(): Annotations = AnnotationsWithOnly(EXACT_ANNOTATION_FQ_NAME)
|
||||||
|
|
||||||
private class AnnotationsWithOnly(val presentAnnotation: FqName): Annotations {
|
private class AnnotationsWithOnly(val presentAnnotation: FqName): Annotations {
|
||||||
override fun iterator(): Iterator<AnnotationDescriptor> = listOf<AnnotationDescriptor>().iterator()
|
override fun iterator(): Iterator<AnnotationDescriptor> = emptyList<AnnotationDescriptor>().iterator()
|
||||||
|
|
||||||
override fun isEmpty(): Boolean = false
|
override fun isEmpty(): Boolean = false
|
||||||
|
|
||||||
override fun hasAnnotation(fqName: FqName): Boolean = fqName == this.presentAnnotation
|
override fun hasAnnotation(fqName: FqName): Boolean = fqName == this.presentAnnotation
|
||||||
|
|
||||||
override fun findAnnotation(fqName: FqName): AnnotationDescriptor? = null
|
|
||||||
|
|
||||||
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> = emptyList()
|
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> = emptyList()
|
||||||
|
|
||||||
override fun getAllAnnotations(): List<AnnotationWithTarget> = emptyList()
|
override fun getAllAnnotations(): List<AnnotationWithTarget> = emptyList()
|
||||||
|
|||||||
-2
@@ -31,8 +31,6 @@ open class DeserializedAnnotations(
|
|||||||
|
|
||||||
override fun isEmpty(): Boolean = annotations.isEmpty()
|
override fun isEmpty(): Boolean = annotations.isEmpty()
|
||||||
|
|
||||||
override fun findAnnotation(fqName: FqName) = annotations.firstOrNull { it.fqName == fqName }
|
|
||||||
|
|
||||||
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> = emptyList()
|
override fun getUseSiteTargetedAnnotations(): List<AnnotationWithTarget> = emptyList()
|
||||||
|
|
||||||
override fun getAllAnnotations(): List<AnnotationWithTarget> = annotations.map { AnnotationWithTarget(it, null) }
|
override fun getAllAnnotations(): List<AnnotationWithTarget> = annotations.map { AnnotationWithTarget(it, null) }
|
||||||
|
|||||||
Reference in New Issue
Block a user