我有一个单元测试文件:
module X04PatMatTest where
import AssertError
import Test.HUnit
import X04PatMat
...
Run Code Online (Sandbox Code Playgroud)
和hlint抱怨:
X04PatMatTest.hs:15:69: Warning: Use string literal
Found:
['a', 'b', 'd']
Why not:
"abd"
Run Code Online (Sandbox Code Playgroud)
由于各种原因,我真的想要['a', 'b', 'd']输入测试代码.
我尝试了各种各样的permuatations
{-# ANN X04PatMatTest "HLint: ignore Warning: Use string literal" #-}
Run Code Online (Sandbox Code Playgroud)
比如将pragma作为文件的第一行,在模块声明之后,用名称module代替X04...,将... 更改Warning为warn...
什么是魔术?
MoF*_*oFu 19
你需要以另一种方式编写pragma.经过一些试验和错误,我想出了以下内容:
module Test where
import Data.Char(toUpper)
{-# ANN module "HLint: ignore Use string literal" #-}
main :: IO ()
main = putStrLn ['a','b','c']
Run Code Online (Sandbox Code Playgroud)
请注意,您必须编写"module"而不是模块的名称
使用最近的(>2019)hlint,您可以使用更简单的语法{- HLINT ignore "some hint" -}:
module Test where
import Data.Char(toUpper)
{- HLINT ignore "Use string literal" -}
main :: IO ()
main = putStrLn ['a','b','c']
Run Code Online (Sandbox Code Playgroud)
与 不同的是ANN,它可以放在文件中的任何位置,并且不需要像String使用那样对其进行注释OverloadedStrings,并且不会导致编译时间增加。
| 归档时间: |
|
| 查看次数: |
1930 次 |
| 最近记录: |