Skip to content
Snippets Groups Projects
  • Sylvain Henry's avatar
    0e9f6def
    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
    History
    Split GHC.Driver.Types
    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
Code owners
Assign users and groups as approvers for specific file changes. Learn more.