Object Definitions
Object definitions are written using OBJECTDEF(...):
import treehugger.forest._, definitions._, treehuggerDSL._
val tree = OBJECTDEF("Main") withParents("App") := BLOCK(
LIT(0)
)
// tree: ModuleDef = ModuleDef(
// Modifiers(0L, TypeName(""), List()),
// TermName("Main"),
// Template(
// List(TypeTree()),
// ValDef(Modifiers(4L, TypeName(""), List()), Ident(TermName("_")), EmptyTree),
// List(Literal(Constant(0)))
// )
// )
treeToString(tree)
// res0: String = """object Main extends App {
// 0
// }"""
Case object definitions
Case object definitions are written using CASEOBJECTDEF(...):
val tree2 = (CASEOBJECTDEF("C"): Tree)
// tree2: Tree = ModuleDef(
// Modifiers(2048L, TypeName(""), List()),
// TermName("C"),
// Template(
// List(),
// ValDef(Modifiers(4L, TypeName(""), List()), Ident(TermName("_")), EmptyTree),
// List()
// )
// )
treeToString(tree2)
// res1: String = "case object C"