[FE] Detect recursion when typealias referenced as annotation in its RHS

#KT-14612 Fixed
This commit is contained in:
Dmitriy Novozhilov
2020-12-24 11:46:19 +03:00
parent d3349197ba
commit 70c4bdf32e
7 changed files with 61 additions and 3 deletions
@@ -79,6 +79,23 @@ class FilteredAnnotations(
}
}
class FilteredByPredicateAnnotations(
private val delegate: Annotations,
private val filter: (AnnotationDescriptor) -> Boolean
) : Annotations {
override fun isEmpty(): Boolean {
return !iterator().hasNext()
}
override fun iterator(): Iterator<AnnotationDescriptor> {
return delegate.filter(filter).iterator()
}
override fun findAnnotation(fqName: FqName): AnnotationDescriptor? {
return super.findAnnotation(fqName)?.takeIf(filter)
}
}
class CompositeAnnotations(
private val delegates: List<Annotations>
) : Annotations {