diff --git a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt.191 b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt.191 index 4a651f2a797..b8cd83109d3 100644 --- a/plugins/uast-kotlin/tests/KotlinUastApiTest.kt.191 +++ b/plugins/uast-kotlin/tests/KotlinUastApiTest.kt.191 @@ -316,6 +316,44 @@ class KotlinUastApiTest : AbstractKotlinUastTest() { } } + @Test + fun testNestedAnnotationParameters() = doTest("AnnotationComplex") { _, file -> + + fun UFile.annotationAndParam(refText: String, check: (PsiAnnotation, String?) -> Unit) { + findElementByTextFromPsi(refText) + .let { expression -> + val (annotation: PsiAnnotation, paramname: String?) = + getContainingAnnotationEntry(expression) ?: kfail("annotation not found for '$refText' ($expression)") + check(annotation, paramname) + } + } + + file.annotationAndParam("sv1") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals(null, paramname) + } + file.annotationAndParam("sv2") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals(null, paramname) + } + file.annotationAndParam("sar1") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals("strings", paramname) + } + file.annotationAndParam("sar2") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals("strings", paramname) + } + file.annotationAndParam("[sar]1") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals("strings", paramname) + } + file.annotationAndParam("[sar]2") { annotation, paramname -> + assertEquals("Annotation", annotation.qualifiedName) + assertEquals("strings", paramname) + } + } + @Test fun testParametersDisorder() = doTest("ParametersDisorder") { _, file ->