如何在AST转换中将@Delegate添加到Groovy中的字段

时间:2018-11-29 10:25:40

标签: groovy annotations delegates transformation abstract-syntax-tree

我正在编写AST转换,我需要在AST中创建一个带有selectedFile: File; ArrayOfSelectedFile = new Array<string>(); onFileChanged(event : any) { this.ArrayOfSelectedFile= []; this.selectedFile = event.target.files; this.ArrayOfSelectedFile.push(event.target.files); } removeSelectedFile(index){ this.ArrayOfSelectedFile.splice(index,1); } 批注的字段。

我有一个将注释应用到的类A。

@Delegate

MyAnnotation具有MyAnnotationASTTransformation,在这里我试图创建类型B的字段并将其添加为类A。编译后所需的结果:

@MyAnnotation
class A{ }

在我的ASTTransformation内部,我尝试了AstBuildet.buildFromString

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

将此添加到我的项目中会出现以下错误:

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))

如果没有@Delegate,它就可以正常工作,我可以在ASTTransformation中手动添加@Delegate吗?

0 个答案:

没有答案