使用ModuleDef时,为singleton对象创建主构造函数

时间:2014-01-10 12:09:47

标签: scala macros

检查任何“定期”创建的模块时,例如object Foo,有一个非空体,看起来像这样:

def <init>() = {
  super.<init>();
  ()
}

显然,这是用于初始化模块的特殊构造函数。

我想综合创建ModuleDef,那么如何为Template的构造函数定义相应的树?我可以使用宏宇宙/上下文中的实用方法吗?


修改:使用showRaw“常规”对象的模板正文如下所示:

DefDef(Modifiers(), nme.CONSTRUCTOR, List(), List(List()), TypeTree(),
  Block(List(pendingSuperCall), Literal(Constant(())))))))

在类型检查后,pendingSuperCall变为

Apply(Select(Super(This(TypeName("Foo")), tpnme.EMPTY), nme.CONSTRUCTOR), List())

0 个答案:

没有答案