{- | Handling of warnings. -} 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 act = do (exc,warns) <- Writer.runWriterT act return $ Report.Cons warns (Sync.toEither exc) {- run :: Monad m => T m a -> m (a, [Report.UserMessage]) run = Writer.runWriterT -} warn :: Monad m => String -> T m () warn text = Writer.tell [text]