Scala でマクロを書いていますが、呼び出すと「Double does not take parameters」というエラー メッセージが表示されます。明らかに、マクロが AST を構築する方法に何か問題があります。では、展開されたマクロをどのように見ることができますか? 実行時にマクロの実装を呼び出す方法はありますか?
3328 次
2 に答える
24
コンパイラに提供-Ymacro-debug-lite
またはオプションを指定します。-Ymacro-debug-verbose
私の頭の上では、印刷された AST の詳細化は-Yshow-trees-compact
、-Yshow-trees-stringified
、-Xprint-types
、-uniqid
およびによって管理されてい-Yshow-symkinds
ます。scala -X
実行して(またはhttps://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/ScalaSettings.scalascala -Y
で scala 設定のソースを調べて)、他の gem を見つけることができます。 )。
また、本質的にマクロであるにもかかわらず、具象化には独自のトレース メカニズムがあり、-Yreify-copypaste
およびで構成できます-Yreify-debug
。
于 2012-07-26T21:47:44.980 に答える
2
マクロコスモスの脱糖剤があり、マクロを含むがこれに限定されないソースコードがどのように変換されるかを示すことができます。
println("TRANSFORMATION:\n"+ desugar{
println("a string")
MY_MACRO("something")
})
于 2012-07-26T21:10:07.667 に答える