module Sound.MIDI.Parser.Warning where
import qualified Sound.MIDI.Parser.Report as Report
import qualified Control.Monad.Exception.Synchronous as Sync
import qualified Control.Monad.Trans.Writer as Writer
type T m = Writer.WriterT [Report.UserMessage] m
run :: Monad m =>
T m (Sync.Exceptional Report.UserMessage a) -> m (Report.T a)
run :: forall (m :: * -> *) a.
Monad m =>
T m (Exceptional UserMessage a) -> m (T a)
run T m (Exceptional UserMessage a)
act =
do (exc,warns) <- T m (Exceptional UserMessage a)
-> m (Exceptional UserMessage a, [UserMessage])
forall w (m :: * -> *) a. WriterT w m a -> m (a, w)
Writer.runWriterT T m (Exceptional UserMessage a)
act
return $ Report.Cons warns (Sync.toEither exc)
warn :: Monad m => String -> T m ()
warn :: forall (m :: * -> *). Monad m => UserMessage -> T m ()
warn UserMessage
text = [UserMessage] -> WriterT [UserMessage] m ()
forall (m :: * -> *) w. Monad m => w -> WriterT w m ()
Writer.tell [UserMessage
text]