Различные настройки предупреждений в файле cabal и в repl - PullRequest
0 голосов
/ 05 сентября 2018

Как правило, я хочу убедиться, что я использую либо явные списки импорта, либо квалифицированные импорты в Haskell, но часто при внесении изменений я просто импортирую все из модуля и затем нуждаюсь в напоминании, чтобы исправить это перед фиксацией. Поэтому я добавил ghc-options: -Wmissing-import-lists в файл cabal моего проекта, который прекрасно работает.

Тем не менее, во время разработки я также часто использую repl, и я обычно хочу гораздо меньше предупреждений в моем сеансе repl, чем при компиляции моего реального кода. Таким образом, у меня была та же идея, предложенная в этом вопросе ; используйте (project-local) .ghci файл, который отключает многие предупреждения, которые я установил в моем файле cabal, включая -Wno-missing-import-lists.

Беда в том, что cabal repl делает это:

Preprocessing library for example-0.1.0.0..
GHCi, version 8.4.3: http://www.haskell.org/ghc/  :? for help

<interactive>:1:1: warning: [-Wmissing-import-lists]
    The module ‘Prelude’ does not have an explicit import list
Loaded GHCi configuration from /home/ben/src/example/.ghci
Loaded GHCi configuration from /home/ben/.ghci
[1 of 1] Compiling Example          ( src/Example.hs, interpreted )
*Example
λ 

Применяется -Wmissing-import-lists во время собственного неявного импорта Prelude еще до того, как он пытается прочитать мой файл .ghci, отключая предупреждение. 1

Я предполагаю, что это также будет проблемой для любых других опций, которые GHCi применяет перед чтением любых файлов .ghci (есть другие?). Так есть ли другой способ указать в файле cabal, что некоторые опции GHC предназначены только для сборки, а не для повторения?


1 Это особенно утомительно, потому что сборка Example.hs с этим предупреждением на самом деле не жалуется на отсутствие импорта из неявного Prelude импорта, и если я явно импортирую Prelude со списком импорта, тогда Я по-прежнему получаю предупреждение с cabal repl от его собственного импорта, хотя эти запросы на самом деле не находятся в области действия в приглашении!

...