cimple-0.0.2: src/Language/Cimple/Diagnostics.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
module Language.Cimple.Diagnostics
( Diagnostics
, warn
) where
import Control.Monad.State.Lazy (State)
import qualified Control.Monad.State.Lazy as State
import Data.Text (Text)
import qualified Data.Text as Text
import Language.Cimple.Lexer (Lexeme (..), lexemeLine)
type Diagnostics a = State [Text] a
warn :: FilePath -> Lexeme Text -> Text -> Diagnostics ()
warn file l w = do
diags <- State.get
State.put $ diag : diags
where
diag = Text.pack file <> ":" <> Text.pack (show (lexemeLine l)) <> ": " <> w