evoke-0.2022.5.19: source/library/Evoke/Hsc.hs
module Evoke.Hsc
( addWarning
, throwError
) where
import qualified GHC.Data.Bag as Ghc
import qualified Control.Monad.IO.Class as IO
import qualified GHC.Utils.Error as Ghc
import qualified GHC.Plugins as Ghc
-- | Adds a warning, which only causes compilation to fail if @-Werror@ is
-- enabled.
addWarning :: Ghc.SrcSpan -> Ghc.MsgDoc -> Ghc.Hsc ()
addWarning srcSpan msgDoc = do
dynFlags <- Ghc.getDynFlags
IO.liftIO
. Ghc.printOrThrowWarnings dynFlags
. Ghc.unitBag
$ Ghc.mkPlainWarnMsg dynFlags srcSpan msgDoc
-- | Throws an error, which will cause compilation to fail.
throwError :: Ghc.SrcSpan -> Ghc.MsgDoc -> Ghc.Hsc a
throwError srcSpan msgDoc = do
dynFlags <- Ghc.getDynFlags
Ghc.throwOneError $ Ghc.mkPlainErrMsg dynFlags srcSpan msgDoc