diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Haddock/InterfaceFile.hs | 12 | ||||
| -rw-r--r-- | src/Haddock/Types.hs | 6 | ||||
| -rw-r--r-- | src/Main.hs | 25 | 
3 files changed, 23 insertions, 20 deletions
| diff --git a/src/Haddock/InterfaceFile.hs b/src/Haddock/InterfaceFile.hs index 62f19275..e04e5b3e 100644 --- a/src/Haddock/InterfaceFile.hs +++ b/src/Haddock/InterfaceFile.hs @@ -60,13 +60,13 @@ binaryInterfaceMagic = 0xD0Cface  -- when one of our own (stored) datatypes is changed.   binaryInterfaceVersion :: Word16  #if __GLASGOW_HASKELL__ == 608 && __GHC_PATCHLEVEL__ == 2 -binaryInterfaceVersion = 2 +binaryInterfaceVersion = 5  #endif           #if __GLASGOW_HASKELL__ == 608 && __GHC_PATCHLEVEL__ == 3 -binaryInterfaceVersion = 3 +binaryInterfaceVersion = 6  #endif             #if __GLASGOW_HASKELL__ >= 609 -binaryInterfaceVersion = 4 +binaryInterfaceVersion = 7  #endif @@ -353,12 +353,13 @@ instance Binary InterfaceFile where  instance Binary InstalledInterface where -  put_ bh (InstalledInterface modu info docMap exps visExps) = do +  put_ bh (InstalledInterface modu info docMap exps visExps opts) = do      put_ bh modu      put_ bh info      put_ bh (Map.toList docMap)      put_ bh exps      put_ bh visExps +    put_ bh opts    get bh = do      modu    <- get bh @@ -366,7 +367,8 @@ instance Binary InstalledInterface where      docMap  <- get bh      exps    <- get bh      visExps <- get bh -    return (InstalledInterface modu info (Map.fromList docMap) exps visExps) +    opts    <- get bh +    return (InstalledInterface modu info (Map.fromList docMap) exps visExps opts)  instance Binary DocOption where diff --git a/src/Haddock/Types.hs b/src/Haddock/Types.hs index 88b6f87a..44cc9161 100644 --- a/src/Haddock/Types.hs +++ b/src/Haddock/Types.hs @@ -167,7 +167,8 @@ data InstalledInterface = InstalledInterface {    instInfo           :: HaddockModInfo Name,    instDocMap         :: Map Name (HsDoc DocName),    instExports        :: [Name], -  instVisibleExports :: [Name] +  instVisibleExports :: [Name], +  instOptions        :: [DocOption]  } @@ -178,7 +179,8 @@ toInstalledIface interface = InstalledInterface {    instInfo           = ifaceInfo           interface,    instDocMap         = ifaceRnDocMap       interface,    instExports        = ifaceExports        interface, -  instVisibleExports = ifaceVisibleExports interface +  instVisibleExports = ifaceVisibleExports interface, +  instOptions        = ifaceOptions        interface  } diff --git a/src/Main.hs b/src/Main.hs index 902faed6..8f3895bd 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -172,14 +172,12 @@ main = handleTopExceptions $ do          -- create the interfaces -- this is the core part of Haddock          (interfaces, homeLinks) <- createInterfaces fileArgs extLinks flags -        let visibleIfaces = [ i | i <- interfaces, OptHide `notElem` ifaceOptions i ] -           liftIO $ do            -- render the interfaces -          renderStep packages visibleIfaces +          renderStep packages interfaces            -- last but not least, dump the interface file -          dumpInterfaceFile (map toInstalledIface visibleIfaces) homeLinks flags +          dumpInterfaceFile (map toInstalledIface interfaces) homeLinks flags  #else        -- initialize GHC        (session, dynflags) <- startGhc libDir (ghcFlags flags) @@ -193,13 +191,11 @@ main = handleTopExceptions $ do        -- create the interfaces -- this is the core part of Haddock        (interfaces, homeLinks) <- createInterfaces session fileArgs extLinks flags -      let visibleIfaces = [ i | i <- interfaces, OptHide `notElem` ifaceOptions i ] -        -- render the interfaces -      renderStep packages visibleIfaces +      renderStep packages interfaces        -- last but not least, dump the interface file -      dumpInterfaceFile (map toInstalledIface visibleIfaces) homeLinks flags +      dumpInterfaceFile (map toInstalledIface interfaces) homeLinks flags  #endif      else do        -- get packages supplied with --read-interface @@ -216,7 +212,7 @@ main = handleTopExceptions $ do  -- | Render the interfaces with whatever backend is specified in the flags   render :: [Flag] -> [Interface] -> [InstalledInterface] -> IO () -render flags visibleIfaces installedIfaces = do +render flags ifaces installedIfaces = do    let      title = case [str | Flag_Heading str <- flags] of  		[] -> "" @@ -271,11 +267,13 @@ render flags visibleIfaces installedIfaces = do    prologue <- getPrologue flags    let  +    visibleIfaces    = [ i | i <- ifaces, OptHide `notElem` ifaceOptions i ] +      -- *all* visible interfaces including external package modules -    allVisibleIfaces = map toInstalledIface visibleIfaces -                       ++ installedIfaces -     -    packageMod       = ifaceMod (head visibleIfaces) +    allIfaces        = map toInstalledIface ifaces ++ installedIfaces +    allVisibleIfaces = [ i | i <- allIfaces, OptHide `notElem` instOptions i ] + +    packageMod       = ifaceMod (head ifaces)      packageStr       = Just (modulePackageString packageMod)      (pkgName,pkgVer) = modulePackageInfo packageMod @@ -305,6 +303,7 @@ render flags visibleIfaces installedIfaces = do    when (Flag_Hoogle `elem` flags) $ do      ppHoogle pkgName pkgVer title prologue visibleIfaces odir +  -------------------------------------------------------------------------------  -- Reading and dumping interface files  ------------------------------------------------------------------------------- | 
