我使用了一些Scala DSL,并且想知道是否开发一个,也可以满足特定于DSL的编译错误。这个想法是一个特定于域的语言也会有特定于域的编译错误消息,帮助领域专家把事情做好。这可能在Scala中吗?
答案 0 :(得分:4)
可能有用的一件事是annotation.implicitNotFound。您可以使用它帮助自定义未解决的隐含的编译器错误。
正如@Dylan指出的那样,如果您使用宏you can use c.abort
,c.info
和c.error
攻击Scala,以使编译器产生一些自定义错误/额外资讯
在这种情况下,annotation.compileTimeOnly也可能会有所帮助。它允许限制代码某些部分的使用,并在有人试图访问时生成自定义错误消息。