aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/src/Haddock.hs
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-11-09 08:13:35 -0800
committerAlec Theriault <alec.theriault@gmail.com>2018-11-09 08:13:35 -0800
commite44f4637472ebcd818089e96338e0b4705b4f649 (patch)
tree1b894bc2df3421c421e4a845c6ad72c821ac2b03 /haddock-api/src/Haddock.hs
parent63abb6c197ae513eac6d171c589b129feb004413 (diff)
parent8a491e437f1c8379b66a420f8584c1761b45aa7e (diff)
Merge branch 'ghc-8.6' into wip/new-ocean
Diffstat (limited to 'haddock-api/src/Haddock.hs')
-rw-r--r--haddock-api/src/Haddock.hs27
1 files changed, 17 insertions, 10 deletions
diff --git a/haddock-api/src/Haddock.hs b/haddock-api/src/Haddock.hs
index dbfba0f4..7a2df3a2 100644
--- a/haddock-api/src/Haddock.hs
+++ b/haddock-api/src/Haddock.hs
@@ -268,9 +268,9 @@ render dflags flags sinceQual qual ifaces installedIfaces extSrcMap = do
allIfaces = map toInstalledIface ifaces ++ installedIfaces
allVisibleIfaces = [ i | i <- allIfaces, OptHide `notElem` instOptions i ]
- pkgMod = ifaceMod (head ifaces)
- pkgKey = moduleUnitId pkgMod
- pkgStr = Just (unitIdString pkgKey)
+ pkgMod = fmap ifaceMod (listToMaybe ifaces)
+ pkgKey = fmap moduleUnitId pkgMod
+ pkgStr = fmap unitIdString pkgKey
pkgNameVer = modulePackageInfo dflags flags pkgMod
pkgName = fmap (unpackFS . (\(PackageName n) -> n)) (fst pkgNameVer)
sincePkg = case sinceQual of
@@ -289,16 +289,22 @@ render dflags flags sinceQual qual ifaces installedIfaces extSrcMap = do
pkgSrcMap = Map.mapKeys moduleUnitId extSrcMap
pkgSrcMap'
- | Flag_HyperlinkedSource `elem` flags =
- Map.insert pkgKey hypSrcModuleNameUrlFormat pkgSrcMap
- | Just srcNameUrl <- srcEntity = Map.insert pkgKey srcNameUrl pkgSrcMap
+ | Flag_HyperlinkedSource `elem` flags
+ , Just k <- pkgKey
+ = Map.insert k hypSrcModuleNameUrlFormat pkgSrcMap
+ | Just srcNameUrl <- srcEntity
+ , Just k <- pkgKey
+ = Map.insert k srcNameUrl pkgSrcMap
| otherwise = pkgSrcMap
-- TODO: Get these from the interface files as with srcMap
pkgSrcLMap'
- | Flag_HyperlinkedSource `elem` flags =
- Map.singleton pkgKey hypSrcModuleLineUrlFormat
- | Just path <- srcLEntity = Map.singleton pkgKey path
+ | Flag_HyperlinkedSource `elem` flags
+ , Just k <- pkgKey
+ = Map.singleton k hypSrcModuleLineUrlFormat
+ | Just path <- srcLEntity
+ , Just k <- pkgKey
+ = Map.singleton k path
| otherwise = Map.empty
sourceUrls' = (srcBase, srcModule', pkgSrcMap', pkgSrcLMap')
@@ -375,7 +381,8 @@ render dflags flags sinceQual qual ifaces installedIfaces extSrcMap = do
visibleIfaces odir
_ -> putStrLn . unlines $
[ "haddock: Unable to find a package providing module "
- ++ moduleNameString (moduleName pkgMod) ++ ", skipping Hoogle."
+ ++ maybe "<no-mod>" (moduleNameString . moduleName) pkgMod
+ ++ ", skipping Hoogle."
, ""
, " Perhaps try specifying the desired package explicitly"
++ " using the --package-name"