Skip to content
  • Sylvain Henry's avatar
    Split GHC.Driver.Types · 0e9f6def
    Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
    I was working on making DynFlags stateless (#17957), especially by
    storing loaded plugins into HscEnv instead of DynFlags. It turned out to
    be complicated because HscEnv is in GHC.Driver.Types but LoadedPlugin
    isn't: it is in GHC.Driver.Plugins which depends on GHC.Driver.Types. I
    didn't feel like introducing yet another hs-boot file to break the loop.
    
    Additionally I remember that while we introduced the module hierarchy
    (#13009) we talked about splitting GHC.Driver.Types because it contained
    various unrelated types and functions, but we never executed. I didn't
    feel like making GHC.Driver.Types bigger with more unrelated Plugins
    related types, so finally I bit the bullet and split GHC.Driver.Types.
    
    As a consequence this patch moves a lot of things. I've tried to put
    them into appropriate modules but nothing is set in stone.
    
    Several other things moved to avoid loops.
    
    * Removed Binary instances from GHC.Utils.Binary for random compiler
      things
    * Moved Typeable Binary instances into GHC.Utils.Binary.Typeable: they
      import a lot of things that users of GHC.Utils.Binary don't want to
      depend on.
    * put everything related to Units/Modules under GHC.Unit:
      GHC.Unit.Finder, GHC.Unit.Module.{ModGuts,ModIface,Deps,etc.}
    * Created several modules under GHC.Types: GHC.Types.Fixity, SourceText,
      etc.
    * Split GHC.Utils.Error (into GHC.Types.Error)
    * Finally removed GHC.Driver.Types
    
    Note that this patch doesn't put loaded plugins into HscEnv. It's left
    for another patch.
    
    Bump haddock submodule
    0e9f6def