0

我正在尝试使用 quickcheck 为我编写的简单词法分析器编写测试。但是,我似乎遇到了某种链接错误

我正在使用 cabal-dev 构建

我的 .cabal 文件正在构建一个库“mylib” 库部分在其公开的模块部分 Lexical.Token 下,在测试套件下,我在 build_depends 下列出了“mylib”,我还在其他模块下列出了 Lexical.token。

我错过了什么?我从 ghc (7.4.1) 得到的错误如下:

Couldn't match expected type `Token'
            with actual type `mylib-0.0.0.1:Lexical.Token.Token'
Expected type: [Token]
Actual type: [mylib-0.0.0.1:Lexical.Token.Token]
4

1 回答 1

1

Cabal 在“Lexical.Token”模块的两个位置上发生冲突。令人困惑的是,它们都是同一个文件。

  1. mylib-0.0.0.1它正在从您解析build-depends为“本地安装和注册”的mylib.
  2. 它在源代码中解析Lexical.Tokenother-modules条目,应该通过您的测试套件公开。

修复它从 删除Lexical.Tokenother-modules我想。您的测试套件不应与您的测试代码共享代码,而是导入所有模块,就好像您的测试代码是一个外部库一样。

于 2013-07-05T17:52:13.163 回答