Kapt: Support nested annotations property.
Also do not rely on Java class comparison, check against qualified names. (cherry picked from commit 7610945)
This commit is contained in:
committed by
Yan Zhulanow
parent
49bd303988
commit
a8b577cd09
+17
-4
@@ -16,11 +16,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.annotation.processing.test.processor
|
||||
|
||||
import org.jetbrains.kotlin.java.model.elements.JeAnnotationMirror
|
||||
import org.jetbrains.kotlin.java.model.elements.JeMethodExecutableElement
|
||||
import org.jetbrains.kotlin.java.model.elements.JeTypeElement
|
||||
import org.jetbrains.kotlin.java.model.elements.JeVariableElement
|
||||
import org.jetbrains.kotlin.java.model.elements.*
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
|
||||
import javax.lang.model.element.AnnotationMirror
|
||||
|
||||
class ProcessorTests : AbstractProcessorTest() {
|
||||
override val testDataDir = "plugins/annotation-processing/testData/processors"
|
||||
@@ -98,4 +96,19 @@ class ProcessorTests : AbstractProcessorTest() {
|
||||
assertEquals(1, implAnnotations.size)
|
||||
assertEquals("Tom", implAnnotations.first().elementValues.values.first().value)
|
||||
}
|
||||
|
||||
fun testNested() = test("Nested", "Anno") { set, roundEnv, env ->
|
||||
assertEquals(1, set.size)
|
||||
val annotatedElements = roundEnv.getElementsAnnotatedWith(set.first())
|
||||
assertEquals(1, annotatedElements.size)
|
||||
val test = annotatedElements.first()
|
||||
val anno2 = test.annotationMirrors.first { it is JeAnnotationMirror && it.psi.qualifiedName == "Anno" }
|
||||
|
||||
fun AnnotationMirror.getParam(name: String) = elementValues.entries.first { it.key.simpleName.toString() == name }.value
|
||||
assertTrue(anno2.getParam("a") is JeAnnotationAnnotationValue)
|
||||
assertTrue((anno2.getParam("b") as JeArrayAnnotationValue).value.first() is JeAnnotationAnnotationValue)
|
||||
assertTrue(anno2.getParam("c") is JePrimitiveAnnotationValue)
|
||||
assertTrue(anno2.getParam("d") is JeTypeAnnotationValue)
|
||||
assertTrue((anno2.getParam("e") as JeArrayAnnotationValue).value.first() is JeTypeAnnotationValue)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user