• Simon Marlow's avatar
    Refactoring and tidyup of HscMain and related things (also fix #1666) · 94bf0d36
    Simon Marlow authored
    While trying to fix #1666 (-Werror aborts too early) I decided to some
    tidyup in GHC/DriverPipeline/HscMain.
     - The GhcMonad overloading is gone from DriverPipeline and HscMain
       now.  GhcMonad is now defined in a module of its own, and only
       used in the top-level GHC layer.  DriverPipeline and HscMain
       use the plain IO monad and take HscEnv as an argument.
     - WarnLogMonad is gone.  printExceptionAndWarnings is now called
       printException (the old name is deprecated).  Session no longer
       contains warnings.
     - HscMain has its own little monad that collects warnings, and also
       plumbs HscEnv around.  The idea here is that warnings are collected
       while we're in HscMain, but on exit from HscMain (any function) we
       check for warnings and either print them (via log_action, so IDEs
       can still override the printing), or turn them into an error if
       -Werror is on.
     - GhcApiCallbacks is gone, along with GHC.loadWithLogger.  Thomas
       Schilling told me he wasn't using these, and I don't see a good
       reason to have them.
     - there's a new pure API to the parser (suggestion from Neil Mitchell):
          parser :: String
                 -> DynFlags
                 -> FilePath
                 -> Either ErrorMessages (WarningMessages, 
                                          Located (HsModule RdrName))
MonadUtils.hs 6.03 KB