haskell 如何仅在编译为库时禁用'-Werror'?

vsaztqbk  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(120)

我已经

ghc-options:
- -Wall
- -Werror

在我的package.yaml中,它为GHC 8. 6构建得很好。
但是当在GHC9代码库中使用该项目时,它会因为不必要的MonadFail导入而出错。
如何更改库,使其在其他项目中使用时不会中止编译?
我试过了

ghc-options:
  "$everything": -Wwarn

我希望-Wwarn覆盖-Werror,因为$everything应该覆盖偶数依赖项。

xqk2d5yq

xqk2d5yq1#

我认为,在库本身指定-Werror是不好的做法。其他编译器标志也是如此,例如优化-O2。另一方面,设置-Wall绝对是好东西,加上我头上的一些其他警告标志,例如-Wincomplete-record-updates-Wincomplete-uni-patterns-Wredundant-constraints等。
如果您希望在使用库或CI时将生成警告转换为错误(这是一个明智的做法),则可以在

  • stack.yaml
ghc-options:
  my-library: -Werror
  • cabal.project
package my-library
  ghc-options: -Werror

也就是说,您可以为任何下游库关闭-Werror,方法是以与上面完全相同的方式为该库设置-Wwarn,这将覆盖原始标志。

相关问题