@@ -39,6 +39,7 @@ import Haddock.Options
39
39
import Haddock.Utils
40
40
41
41
import Control.Monad hiding (forM_ )
42
+ import Control.Applicative
42
43
import Data.Foldable (forM_ )
43
44
import Data.List (isPrefixOf )
44
45
import Control.Exception
@@ -250,9 +251,9 @@ render dflags flags qual ifaces installedIfaces srcMap = do
250
251
allVisibleIfaces = [ i | i <- allIfaces, OptHide `notElem` instOptions i ]
251
252
252
253
pkgMod = ifaceMod (head ifaces)
253
- pkgKey = modulePackageKey pkgMod
254
+ pkgKey = modulePackageKey pkgMod
254
255
pkgStr = Just (packageKeyString pkgKey)
255
- (pkgName,pkgVer) = modulePackageInfo dflags flags pkgMod
256
+ pkgNameVer = modulePackageInfo dflags flags pkgMod
256
257
257
258
(srcBase, srcModule, srcEntity, srcLEntity) = sourceUrls flags
258
259
srcMap' = maybe srcMap (\ path -> Map. insert pkgKey path srcMap) srcEntity
@@ -288,12 +289,20 @@ render dflags flags qual ifaces installedIfaces srcMap = do
288
289
-- TODO: we throw away Meta for both Hoogle and LaTeX right now,
289
290
-- might want to fix that if/when these two get some work on them
290
291
when (Flag_Hoogle `elem` flags) $ do
291
- let pkgNameStr | unpackFS pkgNameFS == " main" && title /= []
292
- = title
293
- | otherwise = unpackFS pkgNameFS
294
- where PackageName pkgNameFS = pkgName
295
- ppHoogle dflags pkgNameStr pkgVer title (fmap _doc prologue) visibleIfaces
296
- odir
292
+ case pkgNameVer of
293
+ Nothing -> putStrLn . unlines $
294
+ [ " haddock: Unable to find a package providing module "
295
+ ++ moduleNameString (moduleName pkgMod) ++ " , skipping Hoogle."
296
+ , " "
297
+ , " Perhaps try specifying the desired package explicitly"
298
+ ++ " using the --package-name"
299
+ , " and --package-version arguments."
300
+ ]
301
+ Just (PackageName pkgNameFS, pkgVer) ->
302
+ let pkgNameStr | unpackFS pkgNameFS == " main" && title /= [] = title
303
+ | otherwise = unpackFS pkgNameFS
304
+ in ppHoogle dflags pkgNameStr pkgVer title (fmap _doc prologue)
305
+ visibleIfaces odir
297
306
298
307
when (Flag_LaTeX `elem` flags) $ do
299
308
ppLaTeX title pkgStr visibleIfaces odir (fmap _doc prologue) opt_latex_style
@@ -312,12 +321,12 @@ modulePackageInfo :: DynFlags
312
321
-- contain the package name or version
313
322
-- provided by the user which we
314
323
-- prioritise
315
- -> Module -> (PackageName , Data.Version. Version )
324
+ -> Module -> Maybe (PackageName , Data.Version. Version )
316
325
modulePackageInfo dflags flags modu =
317
- (fromMaybe (packageName pkg) (optPackageName flags),
318
- fromMaybe (packageVersion pkg) (optPackageVersion flags))
326
+ cmdline <|> pkgDb
319
327
where
320
- pkg = getPackageDetails dflags (modulePackageKey modu)
328
+ cmdline = (,) <$> optPackageName flags <*> optPackageVersion flags
329
+ pkgDb = (\ pkg -> (packageName pkg, packageVersion pkg)) <$> lookupPackage dflags (modulePackageKey modu)
321
330
322
331
323
332
-------------------------------------------------------------------------------
0 commit comments