From 968038c403e71b98a8f55a4d79e64beca8349ab3 Mon Sep 17 00:00:00 2001 From: stuebinm Date: Mon, 20 Sep 2021 01:26:27 +0200 Subject: lint general map properties --- lib/LintWriter.hs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'lib/LintWriter.hs') diff --git a/lib/LintWriter.hs b/lib/LintWriter.hs index 055e2d4..02815e3 100644 --- a/lib/LintWriter.hs +++ b/lib/LintWriter.hs @@ -9,7 +9,8 @@ module LintWriter where import Control.Monad.Trans.Maybe () import Control.Monad.Writer (MonadTrans (lift), - MonadWriter (tell), WriterT) + MonadWriter (tell), WriterT, + runWriterT) import Data.Aeson (ToJSON (toJSON)) import Data.Text (Text) @@ -45,6 +46,16 @@ lintsToDeps (LintResult a) = case a of Left _ -> [] Right (_, lints) -> mapMaybe lintToDep lints +-- | convert a lint result into a flat list of lints +-- (throwing away information on if a single error was fatal) +resultToLints :: LintResult a -> [Lint] +resultToLints (LintResult res) = case res of + Left l -> [l] + Right (_, lints) -> lints + +-- | Confusingly, this returns lints, not a … +runLintWriter :: LintWriter a -> [Lint] +runLintWriter = resultToLints . LintResult . runWriterT -- | write a hint into the LintWriter monad lint :: Level -> Text -> LintWriter () -- cgit v1.2.3