diff options
Diffstat (limited to 'src/Haddock/GHC.hs')
-rw-r--r-- | src/Haddock/GHC.hs | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/src/Haddock/GHC.hs b/src/Haddock/GHC.hs deleted file mode 100644 index c7ef9b88..00000000 --- a/src/Haddock/GHC.hs +++ /dev/null @@ -1,115 +0,0 @@ --- --- Haddock - A Haskell Documentation Tool --- --- (c) Simon Marlow 2003 --- - - -module Haddock.GHC ( - startGhc, - module Haddock.GhcUtils -) where - - -import Haddock.GhcUtils -import Haddock.Exception - -import Data.Maybe -import Control.Monad - -import GHC hiding (flags) -import DynFlags hiding (Option, flags) -import SrcLoc - - --- | Start a GHC session with the -haddock flag set. Also turn off --- compilation and linking. -#if __GLASGOW_HASKELL__ >= 609 -startGhc :: String -> [String] -> (DynFlags -> Ghc a) -> IO a -startGhc libDir flags ghcActs = do - -- TODO: handle warnings? - (restFlags, _) <- parseStaticFlags (map noLoc flags) - runGhc (Just libDir) $ do - dynflags <- getSessionDynFlags -#else -startGhc :: String -> [String] -> IO (Session, DynFlags) -startGhc libDir flags = do - restFlags <- parseStaticFlags flags - session <- newSession (Just libDir) - dynflags <- getSessionDynFlags session - do -#endif - let dynflags' = dopt_set dynflags Opt_Haddock - let dynflags'' = dynflags' { - hscTarget = HscNothing, - ghcMode = CompManager, - ghcLink = NoLink - } - dynflags''' <- parseGhcFlags dynflags'' restFlags flags - defaultCleanupHandler dynflags''' $ do -#if __GLASGOW_HASKELL__ >= 609 - setSessionDynFlags dynflags''' - ghcActs dynflags''' -#else - setSessionDynFlags session dynflags''' - return (session, dynflags''') -#endif - - --- | Expose the list of packages to GHC. Then initialize GHC's package state --- and get the name of the actually loaded packages matching the supplied --- list of packages. The matching packages might be newer versions of the --- supplied ones. For each matching package, return its InstalledPackageInfo. - --- Commented out, since it is unused and doesn't build with GHC >= 6.9 -{- -loadPackages :: Session -> [String] -> IO [InstalledPackageInfo] - --- It would be better to try to get the "in scope" packages from GHC instead. --- This would make the -use-package flag unnecessary. But currently it --- seems all you can get from the GHC api is all packages that are linked in --- (i.e the closure of the "in scope" packages). - -loadPackages session pkgStrs = do - - -- expose the packages - - dfs <- getSessionDynFlags session - let dfs' = dfs { packageFlags = packageFlags dfs ++ map ExposePackage pkgStrs } - setSessionDynFlags session dfs' - - -- try to parse the packages and get their names, without versions - pkgNames <- mapM (handleParse . unpackPackageId . stringToPackageId) pkgStrs - - -- init GHC's package state - (dfs'', depPackages) <- initPackages dfs' - - -- compute the pkgIds of the loaded packages matching the - -- supplied ones - - let depPkgs = map (fromJust . unpackPackageId) depPackages - matchingPackages = [ mkPackageId pkg | pkg <- depPkgs, - pkgName pkg `elem` pkgNames ] - - -- get InstalledPackageInfos for each package - let pkgInfos = map (getPackageDetails (pkgState dfs'')) matchingPackages - - return pkgInfos - where - handleParse (Just pkg) = return (pkgName pkg) - handleParse Nothing = throwE "Could not parse package identifier" --} - --- | Try to parse dynamic GHC flags -parseGhcFlags :: Monad m => DynFlags -> [Located String] - -> [String] -> m DynFlags -parseGhcFlags dynflags flags origFlags = do - -- TODO: handle warnings? -#if __GLASGOW_HASKELL__ >= 609 - (dynflags', rest, _) <- parseDynamicFlags dynflags flags -#else - (dynflags', rest) <- parseDynamicFlags dynflags flags -#endif - if not (null rest) - then throwE ("Couldn't parse GHC options: " ++ (unwords origFlags)) - else return dynflags' |