当使用"无代码"标志时,ghc不会报告非详尽的模式匹配

gal*_*ais 5 haskell pattern-matching typechecking

我倾向于在终端中反复检查我的程序,同时在我选择的编辑器中修改它们以获得实时反馈.我通常会运行类似于:watch -d -n 1 "ghc -fno-code NoIncompletePM.hs".

不幸的是no-code,我用来避免一次又一次编译我不关心的代码的标志似乎与那个不相容warn-incomplete-patterns.例如,这个程序:

{-# OPTIONS  -Wall             #-}
module NoIncompletePM where

argh :: Bool -> Bool
argh True = True
Run Code Online (Sandbox Code Playgroud)

我从来没有得到任何argh错过案例的警告False.可以通过删除no-code标志添加标志来获取所有这些警告force-recomp(以便每次都显示警告,而不仅仅是第一次编译警告)但我确实想避免编译此代码...

我在手册中找不到任何描述这些不兼容的内容,所以我猜这是一个意想不到的行为,或者我做错了什么.有线索吗?

scl*_*clv 1

这是一个已知的 ghc bug:

https://ghc.haskell.org/trac/ghc/ticket/8101

请注意,如果您传递-c一次性模式标志,那么您确实收到警告。所以这是目前的一个解决方法。

遗憾的是,看起来 ( https://ghc.haskell.org/trac/ghc/ticket/10600 ) ghc 8.0 即使在一次性模式下也可能会重新打破这一工作,至少在一个发布周期内如此。