Ответ 1
Нет, это переключатель "все или ничего". Однако вы можете сделать
ghc -Werror -fwarn-missing-methods -fno-warn-missing-signatures
Хотя это заставляет GHC полностью проглатывать предупреждение, что может и не быть тем, что вы хотели.
Может ли ghc каким-то образом убедиться в том, что некоторые типы предупреждений относятся к ошибкам, а другие - как предупреждения, но все же сообщают о них?
Я надеялся, это было бы возможно с чем-то вроде этого:
ghc -Werror -fwarn-missing-methods -Wwarn -fwarn-missing-signatures
но мне не повезло. (Я думаю, что gcc также не поддерживает это.)
Нет, это переключатель "все или ничего". Однако вы можете сделать
ghc -Werror -fwarn-missing-methods -fno-warn-missing-signatures
Хотя это заставляет GHC полностью проглатывать предупреждение, что может и не быть тем, что вы хотели.
Обратите внимание, что, начиная с GHC 8.2.1, эта функция существует! Он был описан Trac ticket # 11219, и теперь вы можете сделать ghc -Werror=missing-methods -Wmissing-signatures
!
Если это вызывает большую озабоченность, вы можете рассмотреть возможность включения и отключения предупреждений для каждого модуля. Так что в некоторых модулях у вас будет:
{-# OPTIONS_GHC -Wall -Werror #-}
здесь обо всем, а в других:
{-# OPTIONS_GHC -w -Werror -fwarn-missing-methods #-}
чтобы включить только некоторые вещи в качестве ошибок.