Подтвердить что ты не робот

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...

Что такое магия?

4b9b3361

Ответ 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]

добавьте это в аргументы или псевдонимы, поэтому игнорируйте это предупреждение, но не нарушайте свой код.

Кстати, аргументы поддержки синататики.