将测试套件链接到库时出错

时间:2013-07-05 17:45:53

标签: haskell build static-libraries cabal quickcheck

我正在尝试使用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]

1 个答案:

答案 0 :(得分:1)

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

  1. 它正在解析mylib-0.0.0.1build-dependsmylib的“本地安装和注册”版本。
  2. 它在源代码中解析Lexical.Token作为other-modules条目,应该通过您的测试套件公开
  3. 我想,修复它是从Lexical.Token删除other-modules。您的测试套件不应与您测试的代码共享代码,而是导入所有模块,就像您测试的代码是外部库一样。