Packages: Don't use expectJust
authorBen Gamari <ben@smart-cactus.org>
Tue, 19 Nov 2019 23:01:43 +0000 (18:01 -0500)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Sat, 23 Nov 2019 23:57:49 +0000 (18:57 -0500)
Throw a slightly more informative error on failure. Motivated by the
errors seen in !2160.

compiler/main/Packages.hs

index f5a8c96..baed7f5 100644 (file)
@@ -428,9 +428,11 @@ extendPackageConfigMap (PackageConfigMap pkg_map closure) new_pkgs
 
 -- | Looks up the package with the given id in the package state, panicing if it is
 -- not found
-getPackageDetails :: DynFlags -> UnitId -> PackageConfig
+getPackageDetails :: HasDebugCallStack => DynFlags -> UnitId -> PackageConfig
 getPackageDetails dflags pid =
-    expectJust "getPackageDetails" (lookupPackage dflags pid)
+    case lookupPackage dflags pid of
+      Just config -> config
+      Nothing -> pprPanic "getPackageDetails" (ppr pid)
 
 lookupInstalledPackage :: DynFlags -> InstalledUnitId -> Maybe PackageConfig
 lookupInstalledPackage dflags uid = lookupInstalledPackage' (pkgIdMap (pkgState dflags)) uid
@@ -438,10 +440,11 @@ lookupInstalledPackage dflags uid = lookupInstalledPackage' (pkgIdMap (pkgState
 lookupInstalledPackage' :: PackageConfigMap -> InstalledUnitId -> Maybe PackageConfig
 lookupInstalledPackage' (PackageConfigMap db _) uid = lookupUDFM db uid
 
-getInstalledPackageDetails :: DynFlags -> InstalledUnitId -> PackageConfig
+getInstalledPackageDetails :: HasDebugCallStack => DynFlags -> InstalledUnitId -> PackageConfig
 getInstalledPackageDetails dflags uid =
-    expectJust "getInstalledPackageDetails" $
-        lookupInstalledPackage dflags uid
+    case lookupInstalledPackage dflags uid of
+      Just config -> config
+      Nothing -> pprPanic "getInstalledPackageDetails" (ppr uid)
 
 -- | Get a list of entries from the package database.  NB: be careful with
 -- this function, although all packages in this map are "visible", this