Как заставить Хаскеро предупреждать о неисчерпывающих совпадениях

В настоящее время я оцениваю Haskero в Visual Studio Code как альтернативный редактор Haskell вместо Atom с Atom-Haskell. Пока что Хаскеро выглядит многообещающе, но мне не хватает предупреждений компилятора, которые я обычно получаю от Atom-Haskell.

Чтобы проиллюстрировать проблему, рассмотрим это простое воспроизведение:

Действия по воспроизведению

  1. Откройте код Visual Studio с уже установленным Haskero
  2. Добавьте новый файл Haskell: Repro.hs
  3. Добавьте следующее содержимое в файл
  4. Нажмите Сохранить

Содержание файла:

module Repro where

foo :: Maybe a -> a
foo (Just x) = x

Ожидаемое поведение

Редактор должен дать предупреждение о влиянии:

Pattern match(es) are non-exhaustive
In an equation for `foo': Patterns not matched: Nothing

Атом-Хаскелл делает это.

Фактическое поведение

Ничего не произошло. Представление " Проблемы" просто утверждает, что:

Никаких проблем в рабочей области не обнаружено.

Подробнее

Приведенные выше шаги по воспроизведению являются самыми простыми, о которых я мог подумать, но я вижу то же самое (отсутствие) поведения, когда я создаю полный проект стека и проверяю, что я запустил stack build intero в корне моего каталога проекта.

Моя среда это:

  • Windows 10 Pro x64
  • Версия стека 1.6.3, версия Git b27e629b8c4ce369e3b8273f04db193b060000db (5454 коммитов) x86_64 hpack-0.20.0
  • Visual Studio Code версии 1.20.0
  • Хаскеро версия 1.3.1
  • Версия Atom 1.23.3 x64
  • language-haskell версия 1.17.3

1 ответ

Похоже, вы должны сказать Хаскеро, чтобы превратить любое предупреждение в фатальную ошибку (обратите внимание на -Werror флаг):

"haskero.intero.ghciOptions": [
    "-Wall",
    "-Werror"
]


Тем не менее, я не могу понять, почему мы должны это делать, так как это работает из коробки:

stack ghci --with-ghc intero "--ghci-options=-Wall" --no-build --no-load

Кажется, именно так Хаскеро запускает Intero в коде Visual Studio, а в GHCi я вижу предупреждение, не пропуская -Werror...


Из любопытства я попробовал то же самое с hsdev 0.3.1.2 и Sublime Haskell 91e0d29 и, кажется, работает прямо из коробки:

Надеюсь, это поможет.

Другие вопросы по тегам