elixir – 是否可以获取带引号的字符串文字的行号?

我正在为Elixir写一个linter,它主要通过检查从Code.string_to_quoted / 2返回的AST来工作.当我的应用程序发现被视为违反样式的内容时,我会使用节点元数据中找到的行号进行报告.

字符串是引用形式相同的文字之一,因此没有元数据.当我只查看字符串时,如何获取行号,并且无法从周围的表达式中绘制行号.

例如,我想要这个字符串

~s(\n"\\"")

在检查时导致第2行报告错误,但返回值没有行号.

iex(18)> Code.string_to_quoted ~S(\n"\\""), lines: true
{:ok, "\""}

最佳答案 您不会获得文字的行号,因为它们表示为自己.它适用于其他一切:

iex(1)> Code.string_to_quoted "a"
{:ok, {:a, [line: 1], nil}}
点赞