diff --git a/plugins/java-model-wrappers/src/org/jetbrains/kotlin/java/model/elements/JeAnnotationMirror.kt b/plugins/java-model-wrappers/src/org/jetbrains/kotlin/java/model/elements/JeAnnotationMirror.kt index 76c9b8f69cf..c8e249d2c2b 100644 --- a/plugins/java-model-wrappers/src/org/jetbrains/kotlin/java/model/elements/JeAnnotationMirror.kt +++ b/plugins/java-model-wrappers/src/org/jetbrains/kotlin/java/model/elements/JeAnnotationMirror.kt @@ -33,27 +33,19 @@ class JeAnnotationMirror(val psi: PsiAnnotation) : AnnotationMirror { return JeDeclaredType(PsiTypesUtil.getClassType(psiClass), psiClass) } - override fun getElementValues(): Map { - val annotationClass = resolveAnnotationClass() ?: return emptyMap() - - return mutableMapOf().apply { - for (attribute in psi.parameterList.attributes) { - val attributeValue = attribute.value ?: continue - val method = annotationClass.methods.firstOrNull { - it is PsiAnnotationMethod && it.name == attribute.name - } ?: return emptyMap() - put(JeMethodExecutableElement(method), JeAnnotationValue(attributeValue)) - } - } - } + override fun getElementValues(): Map = getElementValues(false) + + fun getAllElementValues(): Map = getElementValues(true) - fun getAllElementValues(): Map { + private fun getElementValues(withDefaults: Boolean): Map { val annotationClass = resolveAnnotationClass() ?: return emptyMap() return mutableMapOf().apply { for (method in annotationClass.methods) { method as? PsiAnnotationMethod ?: continue - val attributeValue = psi.findAttributeValue(method.name) ?: method.defaultValue ?: continue + val attributeValue = psi.findDeclaredAttributeValue(method.name) + ?: (if (withDefaults) method.defaultValue else null) + ?: continue put(JeMethodExecutableElement(method), JeAnnotationValue(attributeValue)) } }