X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FGHC.hs;h=966976bccc8aab5dfe7a5c3b91467f9f64513da8;hb=5d0b2bba1dfc0b2786162927ed7b3d4911f1cc54;hp=cbe82c42ef2af3498fd0276fc92a6ccdaff8a5f0;hpb=376101055fb111ebd52b5ef1fb76e00334b44304;p=ghc-hetmet.git diff --git a/compiler/main/GHC.hs b/compiler/main/GHC.hs index cbe82c4..966976b 100644 --- a/compiler/main/GHC.hs +++ b/compiler/main/GHC.hs @@ -180,6 +180,7 @@ module GHC ( #include "HsVersions.h" #ifdef GHCI +import RtClosureInspect ( cvObtainTerm, Term ) import TcRnDriver ( tcRnLookupRdrName, tcRnGetInfo, tcRnLookupName, getModuleExports ) import RdrName ( plusGlobalRdrEnv, Provenance(..), @@ -206,7 +207,6 @@ import Data.Maybe ( fromMaybe) import qualified Linker import Data.Dynamic ( Dynamic ) -import RtClosureInspect ( cvObtainTerm, Term ) import Linker ( HValue, getHValue, extendLinkEnv ) #endif @@ -280,7 +280,6 @@ import System.Exit ( exitWith, ExitCode(..) ) import System.Time ( ClockTime ) import Control.Exception as Exception hiding (handle) import Data.IORef -import Data.Traversable ( traverse ) import System.IO import System.IO.Error ( isDoesNotExistError ) import Prelude hiding (init) @@ -1763,9 +1762,9 @@ data ModuleInfo = ModuleInfo { minf_type_env :: TypeEnv, minf_exports :: NameSet, -- ToDo, [AvailInfo] like ModDetails? minf_rdr_env :: Maybe GlobalRdrEnv, -- Nothing for a compiled/package mod - minf_instances :: [Instance], + minf_instances :: [Instance] #ifdef GHCI - minf_dbg_sites :: [(SiteNumber,Coord)] + ,minf_dbg_sites :: [(SiteNumber,Coord)] #endif -- ToDo: this should really contain the ModIface too } @@ -2286,7 +2285,10 @@ mkSite (pkgName, modName, sitenum) = (mkModule (stringToPackageId pkgName) (mkModuleName modName), sitenum) obtainTerm :: Session -> Bool -> Id -> IO (Maybe Term) -obtainTerm sess force id = withSession sess $ \hsc_env -> - getHValue (varName id) >>= traverse (cvObtainTerm hsc_env force Nothing) +obtainTerm sess force id = withSession sess $ \hsc_env -> do + mb_v <- getHValue (varName id) + case mb_v of + Just v -> fmap Just$ cvObtainTerm hsc_env force (Just$ idType id) v + Nothing -> return Nothing #endif /* GHCI */