Haskell: как сообщить hlint не: "Предупреждение: используйте строковый литерал`
У меня есть файл unit test:
module X04PatMatTest where
import AssertError
import Test.HUnit
import X04PatMat
...
и hlint жалуется:
X04PatMatTest.hs:15:69: Warning: Use string literal
Found:
['a', 'b', 'd']
Why not:
"abd"
по разным причинам, я действительно хочу поставить ['a', 'b', 'd']
в тестовый код.
Я пробовал различные перестановки
{-# ANN X04PatMatTest "HLint: ignore Warning: Use string literal" #-}
например, поставить прагму как первую строку файла после объявления модуля с именем module
вместо X04...
, изменив Warning
на warn
...
Что такое магия?
Ответы
Ответ 1
Вам нужно написать прагму по-другому. После некоторых проб и ошибок я придумал следующее:
module Test where
import Data.Char(toUpper)
{-# ANN module "HLint: ignore Use string literal" #-}
main :: IO ()
main = putStrLn ['a','b','c']
обратите внимание, что вам нужно написать "module"
, а не имя модуля
Ответ 2
Согласитесь с решением @MoFu.
hlint также поддерживает игнорирование определенного предупреждения с помощью аргументов.
hlint -i 'Use string literal' [filename]
добавьте это в аргументы или псевдонимы, поэтому игнорируйте это предупреждение, но не нарушайте свой код.
Кстати, аргументы поддержки синататики.