我已经
ghc-options: - -Wall - -Werror
在我的package.yaml中,它为GHC 8. 6构建得很好。但是当在GHC9代码库中使用该项目时,它会因为不必要的MonadFail导入而出错。如何更改库,使其在其他项目中使用时不会中止编译?我试过了
package.yaml
ghc-options: "$everything": -Wwarn
我希望-Wwarn覆盖-Werror,因为$everything应该覆盖偶数依赖项。
-Wwarn
-Werror
$everything
xqk2d5yq1#
我认为,在库本身指定-Werror是不好的做法。其他编译器标志也是如此,例如优化-O2。另一方面,设置-Wall绝对是好东西,加上我头上的一些其他警告标志,例如-Wincomplete-record-updates,-Wincomplete-uni-patterns,-Wredundant-constraints等。如果您希望在使用库或CI时将生成警告转换为错误(这是一个明智的做法),则可以在
-O2
-Wall
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wredundant-constraints
stack.yaml
ghc-options: my-library: -Werror
cabal.project
package my-library ghc-options: -Werror
也就是说,您可以为任何下游库关闭-Werror,方法是以与上面完全相同的方式为该库设置-Wwarn,这将覆盖原始标志。
1条答案
按热度按时间xqk2d5yq1#
我认为,在库本身指定
-Werror
是不好的做法。其他编译器标志也是如此,例如优化-O2
。另一方面,设置-Wall
绝对是好东西,加上我头上的一些其他警告标志,例如-Wincomplete-record-updates
,-Wincomplete-uni-patterns
,-Wredundant-constraints
等。如果您希望在使用库或CI时将生成警告转换为错误(这是一个明智的做法),则可以在
stack.yaml
:cabal.project
:也就是说,您可以为任何下游库关闭
-Werror
,方法是以与上面完全相同的方式为该库设置-Wwarn
,这将覆盖原始标志。