Я использовал несколько Scala DSL, и мне было интересно, разрабатывает ли он один из них, также может обслуживать специфические для DSL компиляции. Идея заключается в том, что язык, специфичный для домена, также будет обладать сообщениями об ошибках компиляции домена, помогая эксперту по домену правильно разбираться. Это возможно в Скала?Может ли scala dsl быть закодирована для выдачи собственных специализированных ошибок компиляции?
4
A
ответ
4
Одна из вещей, которые могут быть полезны, - annotation.implicitNotFound. Вы можете настроить ошибки компилятора на неразрешенные импликации с помощью этой помощи.
Как @Dylan отметил, что если вы хакерство Scala с макросами you can usec.abort
, c.info
и c.error
сделать выход compiller некоторые пользовательские ошибки/дополнительная информация.
В этом случае annotation.compileTimeOnly также может быть полезен. Это позволяет ограничить использование некоторых частей вашего кода и создавать собственное сообщение об ошибке, если кто-то пытается получить к нему доступ.
Я считаю, что вы можете делать такие вещи с помощью [scala macros] (http://docs.scala-lang.org/overviews/macros/overview.html#reporting-warnings-and-errors) * warning: not для слабонервных * – Dylan
Я тоже думал о выдаче специализированных сообщений для вещей, которые не контролируются с помощью макросов, насколько мне известно. Такие вещи, как тип рассогласования несоответствий, неправильное использование оператора ... требует ли это компиляции самого компилятора или у компилятора есть какие-либо аппаратные средства api или что-то в этом роде? – matanster