haskellhlint

Haskell: how to tell hlint not to: `Warning: Use string literal`


I have a unit test file:

module X04PatMatTest where

import AssertError
import Test.HUnit
import X04PatMat

...

and hlint complains:

X04PatMatTest.hs:15:69: Warning: Use string literal 
Found:
  ['a', 'b', 'd']
Why not:
  "abd"

for various reasons, I really want to put ['a', 'b', 'd'] in the test code.

I have tried various permuatations of

{-# ANN X04PatMatTest "HLint: ignore Warning: Use string literal" #-}

like putting the pragma as the first line of the file, after the module declaration, with the name module instead of X04..., changing the Warning to warn ...

What is the magic?


Solution

  • You need to write the pragma in another way. After some trial and error I came up with the following:

    module Test where
    
    import Data.Char(toUpper)
    
    {-# ANN module "HLint: ignore Use string literal" #-}
    main :: IO ()
    main = putStrLn ['a','b','c']
    

    note that you have to write "module" and not the name of the module