[英]why `stack build` doesn't print the warning, but `stack ghci` does?
我有一個新項目,在Lib.hs
有以下代碼
data ABC
= A
| B
| C
abc :: ABC -> Int
abc A = 1
abc B = 2
我希望stack build
失敗並暗示我沒有處理abc C
我在package.yaml
打開了以下標志:
library:
source-dirs: src
executables:
tt-exe:
main: Main.hs
source-dirs: app
ghc-options:
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- tt
但stack build
編譯沒有警告,沒有錯誤。 但是, stack ghci
能夠給我以下警告:
/Users/leo/zhangchiqing/te/tt/src/Lib.hs:11:1: warning: [-Wincomplete-patterns]
Pattern match(es) are non-exhaustive
In an equation for ‘abc’: Patterns not matched: C
|
11 | abc A = 1
| ^^^^^^^^^...
我錯過了什么,為什么stack build
不會失敗?
GHC版本8.2.2,堆棧解析器:lts-11.1
您已為tt-exe
可執行目標設置了各種GHC選項,由於source-dirs
設置,該目標對應於app/
目錄,但您的Lib.hs
文件似乎位於src/
目錄中。 據推測,此目錄包含library
目標的源代碼,該目標具有一組單獨的GHC選項。
您需要為相關目標指定這些選項,以便stack build
正確應用它們。 但是,由於您正在使用hpack,您還可以將它們提取到頂級ghc-options
部分,該部分將在所有目標之間共享。 任何一種解決方案都應該使stack build
產生您期望的警告。
我不知道為什么stack ghci
行為方式如此,但我認為REPL在某些多目標或多項目配置方面存在問題,所以我並不完全驚訝它在這里做錯了什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.