Stub out pkgState with non-error, helps with debugging.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Mon, 6 Apr 2015 18:32:14 +0000 (11:32 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Fri, 17 Apr 2015 10:10:49 +0000 (03:10 -0700)
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

compiler/main/DynFlags.hs
compiler/main/Packages.hs
compiler/main/Packages.hs-boot

index 446381e..094984b 100644 (file)
@@ -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),
index 985a11a..16ee352 100644 (file)
@@ -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
 
index f2343b6..bac04bc 100644 (file)
@@ -4,3 +4,4 @@ import {-# SOURCE #-} Module (PackageKey)
 import {-# SOURCE #-} DynFlags (DynFlags)
 data PackageState
 packageKeyPackageIdString :: DynFlags -> PackageKey -> Maybe String
+emptyPackageState :: PackageState