/ / Uma scala dsl pode ser codificada para emitir seus próprios erros de compilação especializados? - scala, dsl

Uma scala dsl pode ser codificada para emitir seus próprios erros especializados de compilação? - scala, dsl

Eu usei algumas Scala DSL "s, e estava me perguntandose desenvolver um, também pode atender a erros de compilação específicos do DSL. A ideia é que uma linguagem específica de domínio também teria mensagens de erro de compilação específicas do domínio, ajudando o especialista em domínio a acertar as coisas. Isso é possível em Scala?

Respostas:

4 para resposta № 1

Uma das coisas que podem ser úteis é annotation.implicitNotFound. Você pode personalizar erros do compilador em implícitos não resolvidos com sua ajuda.

Como @Dylan apontou, se você está hackeando Scala com macros você pode usar c.abort, c.info e c.error para fazer com que o compilador produza algum erro personalizado / informação extra.

Nesse caso annotation.compileTimeOnly também pode ser útil. Ele permite restringir o uso de algumas partes do seu código e produzir uma mensagem de erro personalizada se alguém tentar acessá-lo.