ocaml-top не компилирует прошлое (сопоставление с образцом) Предупреждение 8 - PullRequest
0 голосов
/ 27 мая 2018

При использовании ocaml-top 1.1.5 и ocaml 4.02.3 в macOS High Sierra:

При компиляции файла, в котором функция вызывает предупреждение (сопоставление с образцом) Предупреждение 8, предупреждение отображается красным (вверсия ocaml-top для Windows, которую я обычно использую, будет желтой);кажется, что сама функция компилируется и выдает тип, но функции, находящиеся ниже ее в файле, не могут быть скомпилированы (как если бы предупреждение было фактической ошибкой компиляции).

Как я могу компилировать после этого?Мои пропущенные случаи, очевидно, являются преднамеренными.

РЕДАКТИРОВАТЬ: без конкретного ответа ocaml-top, я просто завершаю все свои сопоставления с шаблонами с помощью операторов типа _-> failwith "blabla".Должен ли я использовать что-то еще, кроме ocaml-top, что-нибудь не слишком сложное для установки на macOS для тех, кто не знает, как работают зависимости пакетов и так далее?

1 Ответ

0 голосов
/ 27 мая 2018

Скорее всего, разница в двух средах заключается в опциях компилятора.Предупреждения (по определению) не прекращают компиляцию.Но каждое предупреждение (по номеру) можно сделать фатальным с помощью опции -w, например:

ocamlc -w @8  ...

Если вы можете найти этот параметр, вы можете удалить его, чтобы получить стандартную обработку для предупреждения 8.

Опции компилятора описаны в Разделе 8.2 руководства OCaml.

Как говорит @vonaka, вы также можете использовать атрибуты в источнике, чтобы отключить предупреждение только для одной функциинапример:

let [@warning "-8"] myfun x =
    match x with None -> 18

Атрибуты описаны в Раздел 7.18 руководства OCaml.Встроенные атрибуты, такие как [@warning ...], описаны в разделе 7.18.1.

...