diff options
Diffstat (limited to 'ghc')
-rw-r--r-- | ghc/GHCi/UI/Info.hs | 6 | ||||
-rw-r--r-- | ghc/GHCi/UI/Monad.hs | 7 |
2 files changed, 8 insertions, 5 deletions
diff --git a/ghc/GHCi/UI/Info.hs b/ghc/GHCi/UI/Info.hs index 0f78fa5075..505a1da68f 100644 --- a/ghc/GHCi/UI/Info.hs +++ b/ghc/GHCi/UI/Info.hs @@ -59,7 +59,7 @@ data ModInfo = ModInfo -- ^ Generated set of information about all spans in the -- module that correspond to some kind of identifier for -- which there will be type info and/or location info. - , modinfoRdrEnv :: !(Strict.Maybe GlobalRdrEnv) + , modinfoRdrEnv :: !(Strict.Maybe IfGlobalRdrEnv) -- ^ What's in scope in the module. , modinfoLastUpdate :: !UTCTime -- ^ The timestamp of the file used to generate this record. @@ -316,6 +316,8 @@ getModInfo name = do module_info = tm_checked_module_info typechecked !rdr_env = case modInfoRdrEnv module_info of Just rdrs -> Strict.Just rdrs + -- NB: this has already been deeply forced; no need to do that again. + -- See test case T15369 and Note [Forcing GREInfo] in GHC.Types.GREInfo. Nothing -> Strict.Nothing ts <- liftIO $ getModificationTime $ srcFilePath m return $ @@ -331,7 +333,7 @@ modInfo_rdrs :: ModInfo -> [Name] modInfo_rdrs mi = case modinfoRdrEnv mi of Strict.Nothing -> [] - Strict.Just env -> map greMangledName $ globalRdrEnvElts env + Strict.Just env -> map greName $ globalRdrEnvElts env -- | Get ALL source spans in the module. processAllTypeCheckedModule :: TypecheckedModule -> [SpanInfo] diff --git a/ghc/GHCi/UI/Monad.hs b/ghc/GHCi/UI/Monad.hs index 3016dd66d5..5b360f7400 100644 --- a/ghc/GHCi/UI/Monad.hs +++ b/ghc/GHCi/UI/Monad.hs @@ -51,7 +51,7 @@ import GHC.Types.SafeHaskell import GHC.Driver.Make (ModIfaceCache(..)) import GHC.Unit import GHC.Types.Name.Reader as RdrName (mkOrig) -import qualified GHC.Types.Name.Ppr as Ppr (mkNamePprCtx ) +import qualified GHC.Types.Name.Ppr as Ppr (mkNamePprCtx) import GHC.Builtin.Names (gHC_GHCI_HELPERS) import GHC.Runtime.Interpreter import GHC.Runtime.Context @@ -367,10 +367,11 @@ printForUserNeverQualify doc = do printForUserModInfo :: GhcMonad m => GHC.ModuleInfo -> SDoc -> m () printForUserModInfo info = printForUserGlobalRdrEnv (GHC.modInfoRdrEnv info) -printForUserGlobalRdrEnv :: GhcMonad m => Maybe GlobalRdrEnv -> SDoc -> m () +printForUserGlobalRdrEnv :: (GhcMonad m, Outputable info) + => Maybe (GlobalRdrEnvX info) -> SDoc -> m () printForUserGlobalRdrEnv mb_rdr_env doc = do dflags <- GHC.getInteractiveDynFlags - name_ppr_ctx <- mkNamePprCtxFromGlobalRdrEnv dflags mb_rdr_env + name_ppr_ctx <- mkNamePprCtxFromGlobalRdrEnv dflags mb_rdr_env liftIO $ Ppr.printForUser dflags stdout name_ppr_ctx AllTheWay doc where mkNamePprCtxFromGlobalRdrEnv _ Nothing = GHC.getNamePprCtx |