Crystal lang:如何获取宏本身而不是宏参数的位置。

时间:2018-07-26 09:07:36

标签: macros crystal-lang

一个人可以通过ASTNode#line_number和其他方法来获取ASTNode的位置。

但是问题是,可以获取宏参数的ASTNode而不是宏本身。未定义宏中的self之类的内容。这个问题可能是“如何获取宏本身而不是参数的ASTNode”,但我想这是不可能的。

但是即使对于参数的位置,有些也只返回nil而什么也没有:

macro xx(**args)
    {% p args.line_number %} # => nil
end
xx a: 123

您会发现#line_number#filename,所有其他位置字段对于nilNamedTupleLiteral都是TupleLiteral。这意味着像xx这样的宏永远无法获取代码位置?或者,这只是我想念的东西?

非常感谢。

0 个答案:

没有答案