Do not run annotation checkers for every non-annotated element

This commit is contained in:
Alexander Udalov
2017-12-20 18:33:47 +01:00
parent 46b8deedf7
commit 19e38bbc72
@@ -44,7 +44,6 @@ class AnnotationChecker(
private val additionalCheckers: Iterable<AdditionalAnnotationChecker>,
private val languageVersionSettings: LanguageVersionSettings
) {
fun check(annotated: KtAnnotated, trace: BindingTrace, descriptor: DeclarationDescriptor? = null) {
val actualTargets = getActualTargetList(annotated, descriptor, trace)
checkEntries(annotated.annotationEntries, actualTargets, trace, annotated)
@@ -106,6 +105,8 @@ class AnnotationChecker(
trace: BindingTrace,
annotated: KtAnnotated? = null
) {
if (entries.isEmpty()) return
val entryTypesWithAnnotations = hashMapOf<KotlinType, MutableList<AnnotationUseSiteTarget?>>()
for (entry in entries) {
@@ -124,7 +125,10 @@ class AnnotationChecker(
existingTargetsForAnnotation.add(useSiteTarget)
}
additionalCheckers.forEach { it.checkEntries(entries, actualTargets.defaultTargets, trace) }
for (checker in additionalCheckers) {
checker.checkEntries(entries, actualTargets.defaultTargets, trace)
}
}
private fun checkAnnotationEntry(entry: KtAnnotationEntry, actualTargets: TargetList, trace: BindingTrace) {