4

我目前正在评估Visual Studio Code中的Haskero作为替代 Haskell 编辑器,而不是AtomAtom-Haskell。到目前为止,Haskero似乎很有希望,但我错过了通常从Atom-Haskell获得的编译器警告。

作为说明问题的一种方式,请考虑以下简单的再现:

重现步骤

  1. 打开已安装Haskero 的Visual Studio Code
  2. 添加一个新的 Haskell 文件:Repro.hs
  3. 将以下内容添加到文件中
  4. 保存

文件内容:

module Repro where

foo :: Maybe a -> a
foo (Just x) = x

预期行为

编辑应发出警告:

Pattern match(es) are non-exhaustive
In an equation for `foo': Patterns not matched: Nothing

Atom-Haskell就是这样做的。

实际行为

什么都没发生。问题视图只是指出:

到目前为止,尚未在工作区中检测到任何问题。

更多细节

上面的重现步骤是我能想到的最简单的步骤,但是当我创建一个完整的 Stack 项目并确保我已经stack build intero在项目目录的根目录中运行时,我看到了相同的(缺少)行为。

我的环境是:

  • Windows 10 专业版 x64
  • 堆栈版本 1.6.3,Git 修订版 b27e629b8c4ce369e3b8273f04db193b060000db(5454 次提交)x86_64 hpack-0.20.0
  • Visual Studio 代码版本 1.20.0
  • Haskero 版本 1.3.1
  • 原子版本 1.23.3 x64
  • 语言-haskell版本 1.17.3
4

1 回答 1

2

看起来你必须告诉 Haskero 将任何警告变成致命错误(注意-Werror标志):

"haskero.intero.ghciOptions": [
    "-Wall",
    "-Werror"
]

在此处输入图像描述


但是,我真的不明白为什么我们必须这样做,因为这是开箱即用的:

stack ghci --with-ghc intero "--ghci-options=-Wall" --no-build --no-load

在此处输入图像描述

这似乎是 Haskero 在 Visual Studio Code 中启动 Intero 的方式,而在 GHCi 中我可以看到警告而不通过-Werror...


出于好奇,我对 hsdev 0.3.1.2和 Sublime Haskell进行了同样的尝试91e0d29,并且似乎可以直接开箱即用:

在此处输入图像描述

希望有帮助。

于 2018-02-15T05:31:49.257 回答