From d3e196caf61cd79658e9c3bc2849f90bcf9f9607 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 8 Nov 2016 17:27:32 +0300 Subject: [PATCH] [groovy] booleanValue() and stringValue() for annotation member value --- .../plugins/groovy/lang/psi/impl/grAnnotationUtil.kt | 6 ++++++ .../listenerList/ListenerListTransformationSupport.kt | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/grAnnotationUtil.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/grAnnotationUtil.kt index 61bb815acef8..a6249dff8d5b 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/grAnnotationUtil.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/grAnnotationUtil.kt @@ -18,6 +18,7 @@ package org.jetbrains.plugins.groovy.lang.psi.impl import com.intellij.codeInsight.AnnotationUtil import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiAnnotationMemberValue +import com.intellij.psi.PsiLiteral import com.intellij.psi.PsiNameValuePair fun PsiAnnotation.findDeclaredDetachedValue(attributeName: String?): PsiAnnotationMemberValue? { @@ -28,3 +29,8 @@ fun PsiAnnotation.findDeclaredDetachedValue(attributeName: String?): PsiAnnotati else -> styleAttribute.value } } + +fun PsiAnnotationMemberValue?.booleanValue() = (this as? PsiLiteral)?.value as? Boolean + +fun PsiAnnotationMemberValue?.stringValue() = (this as? PsiLiteral)?.value as? String + diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/listenerList/ListenerListTransformationSupport.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/listenerList/ListenerListTransformationSupport.kt index 622a74b8d7b1..a2c369923b85 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/listenerList/ListenerListTransformationSupport.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/listenerList/ListenerListTransformationSupport.kt @@ -20,9 +20,9 @@ import com.intellij.psi.PsiClassType import com.intellij.psi.PsiModifier import com.intellij.psi.PsiType import org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierFlags -import org.jetbrains.plugins.groovy.lang.psi.impl.GrAnnotationUtil import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil import org.jetbrains.plugins.groovy.lang.psi.impl.findDeclaredDetachedValue +import org.jetbrains.plugins.groovy.lang.psi.impl.stringValue import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrMethodWrapper import org.jetbrains.plugins.groovy.transformations.AstTransformationSupport import org.jetbrains.plugins.groovy.transformations.TransformationContext @@ -35,7 +35,7 @@ class ListenerListTransformationSupport : AstTransformationSupport { val annotation = PsiImplUtil.getAnnotation(field, listenerListFqn) ?: continue val listenerType = field.getListenerType() as? PsiClassType ?: continue val listenerClass = listenerType.resolve() ?: continue - val declaredName = GrAnnotationUtil.getString(annotation.findDeclaredDetachedValue("name")) + val declaredName = annotation.findDeclaredDetachedValue("name").stringValue() val name = StringUtil.nullize(declaredName) ?: listenerClass.name ?: continue context += context.memberBuilder.method("add${name.capitalize()}") { addModifier(GrModifierFlags.PUBLIC_MASK)