diff options
| author | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-04-06 11:32:14 -0700 | 
|---|---|---|
| committer | Edward Z. Yang <ezyang@cs.stanford.edu> | 2015-04-17 03:10:49 -0700 | 
| commit | ad6d6a76eeeb9e33a96054f18c1306e9ebafa652 (patch) | |
| tree | 4815e2c0983d6050343385f7fa4d521ab5571a22 | |
| parent | 2b3766b59f58ad12e86b11ef0322ab0bcc490e52 (diff) | |
| download | haskell-ad6d6a76eeeb9e33a96054f18c1306e9ebafa652.tar.gz | |
Stub out pkgState with non-error, helps with debugging.
Summary:
When we use -dppr-debug, we'll sometimes attempt to
hit the pkgState to give more detailed information.  It's pretty
annoying to have this fail because we haven't filled in the
pkgState: we can still get useful debugging information by
printing the raw package key.  To avoid this, we just put
in some empty stub pkgState, to be filled in later.
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate
Reviewers: simonpj, austin
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D817
| -rw-r--r-- | compiler/main/DynFlags.hs | 5 | ||||
| -rw-r--r-- | compiler/main/Packages.hs | 9 | ||||
| -rw-r--r-- | compiler/main/Packages.hs-boot | 1 | 
3 files changed, 13 insertions, 2 deletions
| diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 446381e207..094984be2e 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -157,7 +157,7 @@ import Module  import PackageConfig  import {-# SOURCE #-} Hooks  import {-# SOURCE #-} PrelNames ( mAIN ) -import {-# SOURCE #-} Packages (PackageState) +import {-# SOURCE #-} Packages (PackageState, emptyPackageState)  import DriverPhases     ( Phase(..), phaseInputExt )  import Config  import CmdLineParser @@ -1480,7 +1480,8 @@ defaultDynFlags mySettings =          packageFlags            = [],          packageEnv              = Nothing,          pkgDatabase             = Nothing, -        pkgState                = panic "no package state yet: call GHC.setSessionDynFlags", +        -- This gets filled in with GHC.setSessionDynFlags +        pkgState                = emptyPackageState,          ways                    = defaultWays mySettings,          buildTag                = mkBuildTag (defaultWays mySettings),          rtsBuildTag             = mkBuildTag (defaultWays mySettings), diff --git a/compiler/main/Packages.hs b/compiler/main/Packages.hs index 985a11a36c..16ee352243 100644 --- a/compiler/main/Packages.hs +++ b/compiler/main/Packages.hs @@ -8,6 +8,7 @@ module Packages (          -- * Reading the package config, and processing cmdline args          PackageState(preloadPackages), +        emptyPackageState,          initPackages,          readPackageConfigs,          getPackageConfRefs, @@ -287,6 +288,14 @@ data PackageState = PackageState {    installedPackageIdMap :: InstalledPackageIdMap    } +emptyPackageState :: PackageState +emptyPackageState = PackageState { +    pkgIdMap = emptyUFM, +    preloadPackages = [], +    moduleNameDb = Map.empty, +    installedPackageIdMap = Map.empty +    } +  type InstalledPackageIdMap = Map InstalledPackageId PackageKey  type InstalledPackageIndex = Map InstalledPackageId PackageConfig diff --git a/compiler/main/Packages.hs-boot b/compiler/main/Packages.hs-boot index f2343b66c9..bac04bc20a 100644 --- a/compiler/main/Packages.hs-boot +++ b/compiler/main/Packages.hs-boot @@ -4,3 +4,4 @@ import {-# SOURCE #-} Module (PackageKey)  import {-# SOURCE #-} DynFlags (DynFlags)  data PackageState  packageKeyPackageIdString :: DynFlags -> PackageKey -> Maybe String +emptyPackageState :: PackageState | 
