From 91a4bbed2ed30b24af1a16e2deadd3c0b00fb757 Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Thu, 1 Feb 2018 17:15:30 +0300 Subject: [PATCH] Uast: `KotlinUNestedAnnotation` with light annotation (IDEA-185890) --- .../jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt | 3 ++- plugins/uast-kotlin/tests/KotlinUastApiTest.kt | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt index 05d8c2af3d8..486c8ecaa91 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt @@ -122,11 +122,12 @@ class KotlinUNestedAnnotation( givenParent: UElement?, private val classDescriptor: ClassDescriptor? ) : KotlinUAnnotationBase(original, givenParent) { - override val javaPsi: PsiAnnotation? = null + override val javaPsi: PsiAnnotation? by lazy { original.toLightAnnotation() } override val annotationClassDescriptor: ClassDescriptor? get() = classDescriptor override fun annotationUseSiteTarget(): AnnotationUseSiteTarget? = null + } diff --git a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt index 5e8fbf581c2..a4cefcc05e1 100644 --- a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt +++ b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt @@ -1,5 +1,6 @@ package org.jetbrains.uast.test.kotlin +import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiModifier import com.intellij.testFramework.UsefulTestCase import org.jetbrains.kotlin.asJava.toLightAnnotation @@ -288,6 +289,9 @@ class KotlinUastApiTest : AbstractKotlinUastTest() { ?: throw AssertionError("haven't got annotation from $referenceExpression(${referenceExpression?.javaClass})") assertEquals("Annotation", convertedUAnnotation.qualifiedName) + val lightAnnotation = convertedUAnnotation.getAsJavaPsiElement(PsiAnnotation::class.java) + ?: throw AssertionError("can't get lightAnnotation from $convertedUAnnotation") + assertEquals("Annotation", lightAnnotation.qualifiedName) } }