From a44dff6803d081d8eefe3f38037a69bc78dc50ef Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 15 Sep 2017 18:12:40 +0200 Subject: [PATCH] Take into account annotation use site target when converting parent --- .../uast/kotlin/KotlinAbstractUElement.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt index 41831c36a66..62933827ec6 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt @@ -17,6 +17,7 @@ package org.jetbrains.uast.kotlin import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType import org.jetbrains.uast.* @@ -28,8 +29,21 @@ abstract class KotlinAbstractUElement(private val givenParent: UElement?) : UEle } protected open fun convertParent(): UElement? { + val psi = psi var parent = psi?.parent ?: psi?.containingFile + if (psi is KtAnnotationEntry) { + val parentUnwrapped = KotlinConverter.unwrapElements(parent) ?: return null + val target = psi.useSiteTarget?.getAnnotationUseSiteTarget() + when (target) { + AnnotationUseSiteTarget.PROPERTY_GETTER -> + parent = (parentUnwrapped as? KtProperty)?.getter ?: parent + + AnnotationUseSiteTarget.PROPERTY_SETTER -> + parent = (parentUnwrapped as? KtProperty)?.setter ?: parent + } + } + if (parent is KtStringTemplateExpression && parent.entries.size == 1) { parent = parent.parent }