标签: scala macros
我正在调试一些与Scala宏相关的代码。
m是一个def宏,它以函数作为参数:
m
def m(f: T => Boolean) = macro xxx
还有另一个功能g: T => Boolean。我通过将不同的lambda表达式传递给m来找到不同的行为:
g: T => Boolean
(x: T) => g(x)
(x: T) => (() => g(x))()
有没有正确的方法来调试这种情况?如果我没弄错,参数将扩展为AST并在编译时传递给宏。如何调试编译的AST?