在宏定义内部,我可以使用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
那个表达式应该是什么?