Как добавить @Delegate к полю в Groovy внутри преобразования AST - PullRequest
0 голосов
/ 29 ноября 2018

Я пишу преобразование AST, и мне нужно создать поле внутри моего AST с аннотацией @Delegate.

У меня есть класс А., к которому я применяю аннотацию.

@MyAnnotation
class A{ }

MyAnnotation имеет MyAnnotationASTTransformation, где я пытаюсь создать поле типа B и добавить его к классу A. Желаемый результат после компиляции:

class A{
    @Delegate
     B object = new B()
 }

Внутри ASTTransformation я попытался AstBuildet.buildFromString

List<ASTNode> astNodeList = new AstBuilder().buildFromString(
 CompilePhase.CONVERSION,
 String.format(
  "class A{\n" +
  "  @Delegate\n"+
  "  B b = new B()\n"+
  "}\n"
 )
)

List<FieldNode> fieldNodeList =((ClassNode)astNodeList.get(1)).getFields()
classNode.addField(fieldNodeList.get(0))

Добавление этого в мой проект приводит к следующей ошибке:

8: class Delegate is not an annotation in @Delegate

Без @Delegate все работает нормально, могу ли я каким-то образом вручную добавить @Delegate в мою ASTTransformation?

...