Files
Alexandr Suhinin dff4a758f6 IDEA-259107 extract method: don't rely on text offsets to link generated elements
GitOrigin-RevId: 382b49a3927e84a463350abf9ed0d36ad76ab633
2021-03-03 11:38:41 +00:00

40 lines
1.1 KiB
Java

public class AnnotationArgConverter {
public GrAnnotationMemberValue convert(PsiAnnotationMemberValue value) {
final StringBuilder buffer = new StringBuilder();
buffer.append("@A(");
newMethod(value, buffer);
buffer.append(")");
try {
return GroovyPsiElementFactory.getInstance(value.getProject()).createAnnotationFromText(buffer.toString());
}
catch (IncorrectOperationException e) {
return null;
}
}
private void newMethod(PsiAnnotationMemberValue value, final StringBuilder buffer) {
value.accept(new JavaElementVisitor() {
@Override
public void visitExpression(PsiExpression expression) {
buffer.append(expression.getText());
}
@Override
public void visitNewExpression(PsiNewExpression expression) {
PsiArrayInitializerExpression arrayInitializer = expression.getArrayInitializer();
if (arrayInitializer == null) {
super.visitNewExpression(expression);
}
else {
buffer.append(")");
}
}
});
}
}