我正在尝试使用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]
答案 0 :(得分:1)
Cabal在“Lexical.Token”模块的两个位置发生冲突。令人困惑的是,它们都是同一个文件。
mylib-0.0.0.1
从build-depends
到mylib
的“本地安装和注册”版本。Lexical.Token
作为other-modules
条目,应该通过您的测试套件公开。我想,修复它是从Lexical.Token
删除other-modules
。您的测试套件不应与您测试的代码共享代码,而是导入所有模块,就像您测试的代码是外部库一样。