From 4a4bf5635da82e60460c016f9ff23f1eb44b30cd Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Tue, 9 Jan 2018 22:03:33 +0300 Subject: [PATCH] Uast: KtLightAnnotation converting support (KT-21702) --- .../org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt | 1 + plugins/uast-kotlin/tests/KotlinUastApiTest.kt | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt index 7a1bcd15177..ba385b3bc81 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/KotlinUastLanguagePlugin.kt @@ -204,6 +204,7 @@ class KotlinUastLanguagePlugin : UastLanguagePlugin { is KtFile -> el { KotlinUFile(original, this@KotlinUastLanguagePlugin) } is FakeFileForLightClass -> el { KotlinUFile(original.navigationElement, this@KotlinUastLanguagePlugin) } is KtAnnotationEntry -> el(build(::KotlinUAnnotation)) + is KtLightAnnotationForSourceEntry -> convertElement(original.kotlinOrigin, givenParent, requiredType) else -> null } } diff --git a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt index 91687e2afd2..11beb41d182 100644 --- a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt +++ b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt @@ -2,11 +2,14 @@ package org.jetbrains.uast.test.kotlin import com.intellij.psi.PsiModifier import com.intellij.testFramework.UsefulTestCase +import org.jetbrains.kotlin.asJava.toLightAnnotation +import org.jetbrains.kotlin.psi.KtAnnotationEntry import org.jetbrains.kotlin.psi.KtBinaryExpression import org.jetbrains.kotlin.psi.KtLiteralStringTemplateEntry import org.jetbrains.kotlin.psi.KtStringTemplateExpression import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase +import org.jetbrains.kotlin.utils.addToStdlib.cast import org.jetbrains.uast.* import org.jetbrains.uast.kotlin.KotlinUastLanguagePlugin import org.jetbrains.uast.test.env.findElementByText @@ -27,6 +30,10 @@ class KotlinUastApiTest : AbstractKotlinUastTest() { val toAttribute = annotation.findAttributeValue("to")!! assertEquals(toAttribute.evaluate(), 0) KtUsefulTestCase.assertInstanceOf(annotation.psi.toUElement(), UAnnotation::class.java) + KtUsefulTestCase.assertInstanceOf( + annotation.psi.cast().toLightAnnotation().toUElement(), + UAnnotation::class.java + ) KtUsefulTestCase.assertInstanceOf(toAttribute.uastParent, UNamedExpression::class.java) KtUsefulTestCase.assertInstanceOf(toAttribute.psi.toUElement()?.uastParent, UNamedExpression::class.java) }