diff options
Diffstat (limited to 'compiler/GHC/Driver/Main.hs')
| -rw-r--r-- | compiler/GHC/Driver/Main.hs | 146 |
1 files changed, 90 insertions, 56 deletions
diff --git a/compiler/GHC/Driver/Main.hs b/compiler/GHC/Driver/Main.hs index 827855a519..143b1f5ccd 100644 --- a/compiler/GHC/Driver/Main.hs +++ b/compiler/GHC/Driver/Main.hs @@ -88,88 +88,127 @@ module GHC.Driver.Main import GHC.Prelude -import Data.Data hiding (Fixity, TyCon) -import Data.Maybe ( fromJust ) -import GHC.Types.Id +import GHC.Driver.Plugins +import GHC.Driver.Session +import GHC.Driver.Backend +import GHC.Driver.Env +import GHC.Driver.CodeOutput +import GHC.Driver.Config +import GHC.Driver.Hooks + +import GHC.Runtime.Context +import GHC.Runtime.Linker +import GHC.Runtime.Linker.Types import GHC.Runtime.Interpreter ( addSptEntry ) +import GHC.Runtime.Loader ( initializePlugins ) import GHCi.RemoteTypes ( ForeignHValue ) +import GHC.ByteCode.Types + +import GHC.Hs +import GHC.Hs.Dump +import GHC.Hs.Stats ( ppSourceStats ) + +import GHC.HsToCore + import GHC.CoreToByteCode ( byteCodeGen, coreExprToBCOs ) -import GHC.Runtime.Linker + +import GHC.IfaceToCore ( typecheckIface ) + +import GHC.Iface.Load ( ifaceStats, initExternalPackageState, writeIface ) +import GHC.Iface.Make +import GHC.Iface.Recomp +import GHC.Iface.Tidy +import GHC.Iface.Ext.Ast ( mkHieFile ) +import GHC.Iface.Ext.Types ( getAsts, hie_asts, hie_module ) +import GHC.Iface.Ext.Binary ( readHieFile, writeHieFile , hie_file_result, NameCacheUpdater(..)) +import GHC.Iface.Ext.Debug ( diffFile, validateScopes ) +import GHC.Iface.Env ( updNameCache ) + +import GHC.Core import GHC.Core.Tidy ( tidyExpr ) import GHC.Core.Type ( Type, Kind ) import GHC.Core.Lint ( lintInteractiveExpr ) -import GHC.Types.Var.Env ( emptyTidyEnv ) -import GHC.Utils.Panic import GHC.Core.ConLike +import GHC.Core.Opt.Pipeline +import GHC.Core.TyCon +import GHC.Core.InstEnv +import GHC.Core.FamInstEnv + +import GHC.CoreToStg.Prep +import GHC.CoreToStg ( coreToStg ) import GHC.Parser.Annotation import GHC.Parser.Errors import GHC.Parser.Errors.Ppr -import GHC.Unit -import GHC.Unit.State -import GHC.Types.Name.Reader -import GHC.Hs -import GHC.Hs.Dump -import GHC.Core -import GHC.Data.StringBuffer import GHC.Parser import GHC.Parser.Lexer as Lexer -import GHC.Types.SrcLoc + import GHC.Tc.Module -import GHC.IfaceToCore ( typecheckIface ) import GHC.Tc.Utils.Monad import GHC.Tc.Utils.Zonk ( ZonkFlexi (DefaultFlexi) ) -import GHC.Types.Name.Cache ( initNameCache ) -import GHC.Builtin.Utils -import GHC.Core.Opt.Pipeline -import GHC.HsToCore -import GHC.Iface.Load ( ifaceStats, initExternalPackageState, writeIface ) -import GHC.Iface.Make -import GHC.Iface.Recomp -import GHC.Iface.Tidy -import GHC.CoreToStg.Prep -import GHC.CoreToStg ( coreToStg ) + import GHC.Stg.Syntax import GHC.Stg.FVs ( annTopBindingsFreeVars ) import GHC.Stg.Pipeline ( stg2stg ) + +import GHC.Builtin.Utils +import GHC.Builtin.Names + import qualified GHC.StgToCmm as StgToCmm ( codeGen ) -import GHC.Types.CostCentre -import GHC.Core.TyCon -import GHC.Types.Name +import GHC.StgToCmm.Types (CgInfos (..), ModuleLFInfos) + import GHC.Cmm import GHC.Cmm.Parser ( parseCmmFile ) import GHC.Cmm.Info.Build import GHC.Cmm.Pipeline import GHC.Cmm.Info -import GHC.Driver.CodeOutput -import GHC.Driver.Config -import GHC.Core.InstEnv -import GHC.Core.FamInstEnv -import GHC.Utils.Fingerprint ( Fingerprint ) -import GHC.Driver.Hooks -import GHC.Tc.Utils.Env -import GHC.Builtin.Names -import GHC.Driver.Plugins -import GHC.Runtime.Loader ( initializePlugins ) -import GHC.StgToCmm.Types (CgInfos (..), ModuleLFInfos) -import GHC.Driver.Session -import GHC.Driver.Backend -import GHC.Utils.Error +import GHC.Unit +import GHC.Unit.External +import GHC.Unit.State +import GHC.Unit.Module.ModDetails +import GHC.Unit.Module.ModGuts +import GHC.Unit.Module.ModIface +import GHC.Unit.Module.ModSummary +import GHC.Unit.Module.Graph +import GHC.Unit.Module.Imported +import GHC.Unit.Module.Deps +import GHC.Unit.Module.Status +import GHC.Unit.Home.ModInfo -import GHC.Utils.Outputable +import GHC.Types.Id +import GHC.Types.SourceError +import GHC.Types.SafeHaskell +import GHC.Types.ForeignStubs +import GHC.Types.Var.Env ( emptyTidyEnv ) +import GHC.Types.Fixity.Env +import GHC.Types.CostCentre +import GHC.Types.Unique.Supply +import GHC.Types.SourceFile +import GHC.Types.SrcLoc +import GHC.Types.Name import GHC.Types.Name.Env -import GHC.Hs.Stats ( ppSourceStats ) -import GHC.Driver.Types +import GHC.Types.Name.Cache ( initNameCache ) +import GHC.Types.Name.Reader +import GHC.Types.Name.Ppr +import GHC.Types.TyThing +import GHC.Types.HpcInfo + +import GHC.Utils.Fingerprint ( Fingerprint ) +import GHC.Utils.Panic +import GHC.Utils.Error +import GHC.Utils.Outputable +import GHC.Utils.Exception +import GHC.Utils.Misc + import GHC.Data.FastString -import GHC.Types.Unique.Supply import GHC.Data.Bag -import GHC.Utils.Exception +import GHC.Data.StringBuffer import qualified GHC.Data.Stream as Stream import GHC.Data.Stream (Stream) -import GHC.Utils.Misc - +import Data.Data hiding (Fixity, TyCon) +import Data.Maybe ( fromJust ) import Data.List ( nub, isPrefixOf, partition ) import Control.Monad import Data.IORef @@ -183,11 +222,6 @@ import Data.Functor import Control.DeepSeq (force) import Data.Bifunctor (first, bimap) -import GHC.Iface.Ext.Ast ( mkHieFile ) -import GHC.Iface.Ext.Types ( getAsts, hie_asts, hie_module ) -import GHC.Iface.Ext.Binary ( readHieFile, writeHieFile , hie_file_result, NameCacheUpdater(..)) -import GHC.Iface.Ext.Debug ( diffFile, validateScopes ) - #include "HsVersions.h" @@ -1639,7 +1673,7 @@ you run it you get a list of HValues that should be the same length as the list of names; add them to the ClosureEnv. A naked expression returns a singleton Name [it]. The stmt is lifted into the -IO monad as explained in Note [Interactively-bound Ids in GHCi] in GHC.Driver.Types +IO monad as explained in Note [Interactively-bound Ids in GHCi] in GHC.Runtime.Context -} -- | Compile a stmt all the way to an HValue, but don't run it @@ -1781,7 +1815,7 @@ hscParsedDecls hsc_env decls = runInteractiveHsc hsc_env $ do -- We only need to keep around the external bindings -- (as decided by GHC.Iface.Tidy), since those are the only ones -- that might later be looked up by name. But we can exclude - -- - DFunIds, which are in 'cls_insts' (see Note [ic_tythings] in GHC.Driver.Types + -- - DFunIds, which are in 'cls_insts' (see Note [ic_tythings] in GHC.Runtime.Context -- - Implicit Ids, which are implicit in tcs -- c.f. GHC.Tc.Module.runTcInteractive, which reconstructs the TypeEnv |
