diff options
| author | Duncan Coutts <duncan@well-typed.com> | 2014-08-27 13:49:31 +0100 | 
|---|---|---|
| committer | Duncan Coutts <duncan@well-typed.com> | 2014-08-27 13:49:31 +0100 | 
| commit | b2a807da55d197c648fd2df1f156f9862711d92b (patch) | |
| tree | 448704dd8a31baf9f1a80bc1438d7d97b5a0438b /src/Haddock | |
| parent | f32ad30e9b8c5d4ee54c60c9c3b282fef7d297a5 (diff) | |
Changes due to ghc api changes in package representation
Also fix a bug with finding the package name and version given a
module. This had become wrong due to the package key changes (it was
very hacky in the first place). We now look up the package key in the
package db to get the package info properly.
Diffstat (limited to 'src/Haddock')
| -rw-r--r-- | src/Haddock/Backends/Hoogle.hs | 6 | ||||
| -rw-r--r-- | src/Haddock/GhcUtils.hs | 25 | 
2 files changed, 9 insertions, 22 deletions
| diff --git a/src/Haddock/Backends/Hoogle.hs b/src/Haddock/Backends/Hoogle.hs index 628e1cd0..13145298 100644 --- a/src/Haddock/Backends/Hoogle.hs +++ b/src/Haddock/Backends/Hoogle.hs @@ -25,6 +25,7 @@ import Outputable  import Data.Char  import Data.List  import Data.Maybe +import Data.Version  import System.FilePath  import System.IO @@ -34,13 +35,14 @@ prefix = ["-- Hoogle documentation, generated by Haddock"           ,""] -ppHoogle :: DynFlags -> String -> String -> String -> Maybe (Doc RdrName) -> [Interface] -> FilePath -> IO () +ppHoogle :: DynFlags -> String -> Version -> String -> Maybe (Doc RdrName) -> [Interface] -> FilePath -> IO ()  ppHoogle dflags package version synopsis prologue ifaces odir = do      let filename = package ++ ".txt"          contents = prefix ++                     docWith dflags (drop 2 $ dropWhile (/= ':') synopsis) prologue ++                     ["@package " ++ package] ++ -                   ["@version " ++ version | version /= ""] ++ +                   ["@version " ++ showVersion version +                   | not (null (versionBranch version)) ] ++                     concat [ppModule dflags i | i <- ifaces, OptHide `notElem` ifaceOptions i]      h <- openFile (odir </> filename) WriteMode      hSetEncoding h utf8 diff --git a/src/Haddock/GhcUtils.hs b/src/Haddock/GhcUtils.hs index 33d92131..2c7b79a1 100644 --- a/src/Haddock/GhcUtils.hs +++ b/src/Haddock/GhcUtils.hs @@ -22,8 +22,6 @@ import Control.Arrow  import Data.Foldable hiding (concatMap)  import Data.Function  import Data.Traversable -import Distribution.Compat.ReadP -import Distribution.Text  import Exception  import Outputable @@ -43,24 +41,11 @@ moduleString = moduleNameString . moduleName  -- return the (name,version) of the package -modulePackageInfo :: Module -> (String, [Char]) -modulePackageInfo modu = case unpackPackageKey pkg of -                          Nothing -> (packageKeyString pkg, "") -                          Just x -> (display $ pkgName x, showVersion (pkgVersion x)) -  where pkg = modulePackageKey modu - - --- This was removed from GHC 6.11 --- XXX we shouldn't be using it, probably - --- | Try and interpret a GHC 'PackageKey' as a cabal 'PackageIdentifer'. Returns @Nothing@ if --- we could not parse it as such an object. -unpackPackageKey :: PackageKey -> Maybe PackageIdentifier -unpackPackageKey p -  = case [ pid | (pid,"") <- readP_to_S parse str ] of -        []      -> Nothing -        (pid:_) -> Just pid -  where str = packageKeyString p +modulePackageInfo :: DynFlags -> Module -> (PackageName, Version) +modulePackageInfo dflags modu = +    (packageName pkg, packageVersion pkg) +  where +    pkg = getPackageDetails dflags (modulePackageKey modu)  lookupLoadedHomeModuleGRE  :: GhcMonad m => ModuleName -> m (Maybe GlobalRdrEnv) | 
