19

Scala でマクロを書いていますが、呼び出すと「Double does not take parameters」というエラー メッセージが表示されます。明らかに、マクロが AST を構築する方法に何か問題があります。では、展開されたマクロをどのように見ることができますか? 実行時にマクロの実装を呼び出す方法はありますか?

4

2 に答える 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 に答える