检查任何“定期”创建的模块时,例如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())