質問

スカラでマクロを書いていますが、私が呼び出すと、 "doubleはパラメータを取らない"というエラーメッセージが表示されます。明らかにマクロがどのようにASTを構築するかに問題があります。それでは、どのように拡張されたマクロを見ることができますか?実行時にマクロ実装を呼び出す方法はありますか?

役に立ちましたか?

解決

は、コンパイラに-Ymacro-debug-liteまたは-Ymacro-debug-verboseオプションを提供します。

私の頭の上から、プリントされたASTのテラレーションは、-Yshow-trees-compact-Yshow-trees-stringified-Xprint-types-uniqid、および-Yshow-symkindsによって管理されています。scala -Xscala -Yを実行して、他の宝石を見つけることができます(または https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/Scalasettings.Scala

また、本質的にマクロであるにもかかわらず、reificationには、-Yreify-copypaste-Yreify-debugによって設定できる独自のトレースメカニズムがあります。

他のヒント

MacrocosmのDesugar は、マクロを含むがこれに限定されない、ソースコードがどのように変換されているかを示すことができます。

    println("TRANSFORMATION:\n"+ desugar{
        println("a string") 
        MY_MACRO("something")
    })
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top