Make mkQualPackage more robust when package key is bad.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Thu, 9 Jul 2015 17:21:51 +0000 (10:21 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Thu, 9 Jul 2015 18:05:06 +0000 (11:05 -0700)
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: bgamari, austin

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1060

GHC Trac Issues: #10624

compiler/main/HscTypes.hs

index c2a5153..b7707f8 100644 (file)
@@ -1620,15 +1620,14 @@ mkQualPackage dflags pkg_key
         -- Skip the lookup if it's main, since it won't be in the package
         -- database!
      = False
-     | searchPackageId dflags pkgid `lengthIs` 1
+     | Just pkgid <- mb_pkgid
+     , searchPackageId dflags pkgid `lengthIs` 1
         -- this says: we are given a package pkg-0.1@MMM, are there only one
         -- exposed packages whose package ID is pkg-0.1?
      = False
      | otherwise
      = True
-     where pkg = fromMaybe (pprPanic "qual_pkg" (ftext (packageKeyFS pkg_key)))
-                    (lookupPackage dflags pkg_key)
-           pkgid = sourcePackageId pkg
+     where mb_pkgid = fmap sourcePackageId (lookupPackage dflags pkg_key)
 
 -- | A function which only qualifies package names if necessary; but
 -- qualifies all other identifiers.