Question

J'écris une macro dans Scala, mais lorsque je l'appelle, je reçois un message d'erreur disant "Le double ne prend pas de paramètres".Il est clair qu'il y a quelque chose qui ne va pas dans la façon dont la macro construit l'AST.Alors, comment puis-je voir la macro développée ?Existe-t-il un moyen d'appeler l'implémentation de la macro au moment de l'exécution ?

Était-ce utile?

La solution

Fournir -Ymacro-debug-lite ou -Ymacro-debug-verbose option au compilateur.

De mémoire, la détalisation des AST imprimés est régie par -Yshow-trees-compact, -Yshow-trees-stringified, -Xprint-types, -uniqid et -Yshow-symkinds.Vous pouvez trouver d'autres joyaux en exécutant scala -X et scala -Y (ou en inspectant les sources des paramètres scala à https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala).

De plus, bien qu'elle soit essentiellement une macro, la réification possède son propre mécanisme de traçage qui peut être configuré par -Yreify-copypaste et -Yreify-debug.

Autres conseils

Il y a La descendarde de Macrocosm qui peut montrer comment votre code source, y compris, mais pas de limité aux macros, est transformé en.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top