Domanda

Sto scrivendo una macro in Scala, ma quando lo chiamo ricevo un messaggio di errore che dice "Double non prende i parametri".Chiaramente c'è qualcosa di sbagliato in come la macro costruisce l'AST.Quindi come posso vedere la macro espansa?C'è un modo per chiamare l'implementazione macro in runtime?

È stato utile?

Soluzione

Fornire l'opzione -Ymacro-debug-lite o -Ymacro-debug-verbose per il compilatore.

Off la parte superiore della testa, la detalizzazione degli AST stampati è regolata da -Yshow-trees-compact, -Yshow-trees-stringified, -Xprint-types, -uniqid e -Yshow-symkinds.È possibile trovare altre gemme eseguendo scala -X e scala -Y (o ispezionando le fonti di impostazioni Scala a https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/Scalasettings.Scala ).

Inoltre, nonostante sia essenzialmente una macro, la reificazione ha il proprio meccanismo di tracciamento che può essere configurato da -Yreify-copypaste e -Yreify-debug.

Altri suggerimenti

C'è Desugar di Macrocosm che può mostrare come il tuo codice sorgente, incluso, ma non limitato a macro, viene trasformato in.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top