可能重复:
What’s the easiest way to use reify (get an AST of) an expression in Scala?
在宏定义中,我可以在c.reify
参数上使用Context
将表达式转换为AST。
但是我希望能够通过传递AST来测试我的宏功能并看看它是什么。换句话说,给定:
def printf(format: String, args: Any*): Unit = macro printf_impl
def printf_impl(c: Context)(format: c.Expr[String], args: Expr[Any]*): c.Expr[Unit] = ....
我希望能够通过特定表达式生成AST,因此我可以进行单元测试或只是在REPL进行非正式测试
printf_impl(c.reify("x%sy", c.reify(4 + 5))
但该表达式应该c
是什么?