Как отключить Ошибка (предупреждение 66): неиспользованный открыть! в дюне
Согласно https://github.com/ocaml/ocaml/pull/1110, OCaml 4.08 и более поздних версий выдает предупреждение об открытии неиспользуемых модулей, даже если они открываются с помощью open!
, Это создает трения с обычной практикой использования open! Foo
установить, что следующий код должен быть в контексте модуля Foo
(используется ли какая-либо вещь изнутри Foo
). Кроме того, так как dune
по умолчанию обрабатывает все предупреждения как фатальные ошибки, это приведет к построению дюны по умолчанию dev
профиль не работает с ошибками, такими как
$ dune build
File "lib/mylib.ml", line 1, characters 0-10:
1 | open! Core
^^^^^^^^^^
Error (warning 66): unused open! Core.
Как я могу отключить это предупреждение и фатальную ошибку?
1 ответ
FAQ по дюне объясняет, как настроить предупреждения так, чтобы они были "нефатальными" (позволяя продолжить сборку). Тем не менее, это все равно оставит предупреждения, загромождающие результаты вашей сборки. Для разработчиков, использующих open! Foo
идиома, чтобы установить контекст, это раздражает. Лучшее решение - просто отключить это предупреждение для проекта:
- Создать
dune
файл в корне вашего проекта Добавьте следующую строфу
(env (dev (flags (:standard -w -66))))
Эта строфа инструктирует dune
пройти -w
флаг с -66
аргумент компилятору OCaml при сборке под dev
профиль. man ocamlc
объясняет, как работает этот флаг:
-w warning-list
Enable, disable, or mark as fatal the warnings specified by the argument warning-list.
...
-num Disable warning number num.
...
The warning numbers are as follows.
...
66 Unused open! statement.