Refactor: extract AnnotationDescriptor.annotationClass utility

This commit is contained in:
Pavel V. Talanov
2017-04-28 18:41:48 +03:00
parent 7ef18fe5ba
commit 55a0e138fc
19 changed files with 55 additions and 33 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.AnnotationChecker
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
import org.jetbrains.kotlin.resolve.source.getPsi
@@ -96,7 +97,7 @@ private fun lightAnnotationsForEntries(lightModifierList: KtLightModifierList<*>
return getAnnotationDescriptors(annotatedKtDeclaration, lightModifierListOwner)
.mapNotNull { descriptor ->
val fqName = descriptor.type.constructor.declarationDescriptor?.fqNameUnsafe?.asString() ?: return@mapNotNull null
val fqName = descriptor.annotationClass?.fqNameUnsafe?.asString() ?: return@mapNotNull null
val entry = descriptor.source.getPsi() as? KtAnnotationEntry ?: return@mapNotNull null
Pair(fqName, entry)
}
@@ -111,6 +112,7 @@ private fun lightAnnotationsForEntries(lightModifierList: KtLightModifierList<*>
}
}
}
private fun getAnnotationDescriptors(declaration: KtDeclaration?, annotatedLightElement: KtLightElement<*, *>): List<AnnotationDescriptor> {
val descriptor = declaration?.let { LightClassGenerationSupport.getInstance(it.project).resolveToDescriptor(it) }
val annotatedDescriptor = when {
@@ -147,4 +149,4 @@ private fun AnnotationWithTarget.matches(annotated: KtLightElement<*, *>): Boole
val declarationSiteTargets = AnnotationChecker.applicableTargetSet(annotation)
return KotlinTarget.FIELD in declarationSiteTargets && KotlinTarget.PROPERTY !in declarationSiteTargets
}
}