Pergunta

Estou escrevendo uma macro em Scala, mas quando a chamo recebo uma mensagem de erro dizendo "Double não aceita parâmetros".Claramente há algo errado com a forma como a macro constrói o AST.Então, como posso ver a macro expandida?Existe uma maneira de chamar a implementação da macro em tempo de execução?

Foi útil?

Solução

Fornecer -Ymacro-debug-lite ou -Ymacro-debug-verbose opção para o compilador.

Na minha cabeça, a detalhamento de ASTs impressos é regida por -Yshow-trees-compact, -Yshow-trees-stringified, -Xprint-types, -uniqid e -Yshow-symkinds.Você pode encontrar outras joias executando scala -X e scala -Y (ou inspecionando as fontes das configurações do scala em https://github.com/scala/scala/blob/2.10.x/src/compiler/scala/tools/nsc/settings/ScalaSettings.scala).

Além disso, apesar de ser essencialmente uma macro, a reificação possui seu próprio mecanismo de rastreamento que pode ser configurado por -Yreify-copypaste e -Yreify-debug.

Outras dicas

O açúcar do macrocosmo que pode mostrar como seu código-fonte, incluindo, mas não se limitando a macros, é transformado.

    println("TRANSFORMATION:\n"+ desugar{
        println("a string") 
        MY_MACRO("something")
    })
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top