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 № 1Uma 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.