hfmt-0.3.0.0: src/Language/Haskell/Format/HLint.hs
module Language.Haskell.Format.HLint
( autoSettings
, suggester
) where
import Language.Haskell.Format.Internal
import Language.Haskell.Format.Types
import Language.Haskell.HLint (Classify, Hint, Idea, ParseError (..),
ParseFlags, applyHints, argsSettings,
parseModuleEx)
import System.IO.Unsafe (unsafePerformIO)
suggester :: (ParseFlags, [Classify], Hint) -> Formatter
suggester = mkSuggester . hlint
hlint ::
(ParseFlags, [Classify], Hint)
-> HaskellSource
-> Either String [Suggestion]
hlint (flags, classify, hint) (HaskellSource filepath source) =
case unsafePerformIO (parseModuleEx flags filepath (Just source)) of
Right m -> Right . map ideaToSuggestion . ideas $ m
Left parseError -> Left . parseErrorMessage $ parseError
where
ideas m = applyHints classify hint [m]
autoSettings :: IO (ParseFlags, [Classify], Hint)
autoSettings = argsSettings []
ideaToSuggestion :: Idea -> Suggestion
ideaToSuggestion = Suggestion . show