Refactoring and tidyup of HscMain and related things (also fix #1666)
authorSimon Marlow <marlowsd@gmail.com>
Wed, 27 Oct 2010 12:11:32 +0000 (12:11 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 27 Oct 2010 12:11:32 +0000 (12:11 +0000)
commit94bf0d3604ff0d2ecab246924af712bdd1c29a40
tree6901f70d45e5afdec98c14f8fb61486d5e321e1f
parent2493b18037055a5c284563d10931386e589a79b0
Refactoring and tidyup of HscMain and related things (also fix #1666)
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))
23 files changed:
compiler/basicTypes/SrcLoc.lhs
compiler/ghc.cabal.in
compiler/ghci/Debugger.hs
compiler/main/DriverMkDepend.hs
compiler/main/DriverPipeline.hs
compiler/main/ErrUtils.lhs
compiler/main/GHC.hs
compiler/main/GhcMonad.hs [new file with mode: 0644]
compiler/main/HeaderInfo.hs
compiler/main/HscMain.lhs
compiler/main/HscTypes.lhs
compiler/main/InteractiveEval.hs
compiler/rename/RnNames.lhs
compiler/simplCore/CoreMonad.lhs
compiler/typecheck/TcRnMonad.lhs
compiler/typecheck/TcSplice.lhs
compiler/utils/MonadUtils.hs
compiler/utils/StringBuffer.lhs
compiler/vectorise/Vectorise.hs
compiler/vectorise/Vectorise/Monad.hs
ghc/GhciMonad.hs
ghc/InteractiveUI.hs
ghc/Main.hs