summaryrefslogtreecommitdiff
path: root/compiler/ghci
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2009-04-21 13:10:38 +0000
committerSimon Marlow <marlowsd@gmail.com>2009-04-21 13:10:38 +0000
commitef03a76a01e538ccae5239dce00c583e9da17984 (patch)
tree66693ced716f56f4f66a7c87d4733e1612bef1b5 /compiler/ghci
parenta70a6e393222e586c518ca7c1982be6d2b9ff1d2 (diff)
downloadhaskell-ef03a76a01e538ccae5239dce00c583e9da17984.tar.gz
FIX #2682: banish silly cases of the "module Foo is not loaded" error
In GHCi if you say 'import Foo' meaning to load a package module Foo, and Foo.hs is found on the search path, then GHCi replies "module Foo is not loaded", because it knows Foo refers to the source file rather than the package module, and you haven't loaded that module with :load. This is consistent with the usual module-finding semantics. However, it isn't particularly useful. And it leads to silly problems like not being able to start GHCi when you happen to be sitting in libraries/base, because GHCi thinks the Prelude hasn't been loaded. So now I've made a slight change to the way that 'import M' works: if M is loaded, then it refers to the loaded module, otherwise it looks for a package module M. This does what the reporter of #2682 wanted, and since it turns an error condition into meaningful behaviour it can't break anything. The only undesirable consequence is that 'import M' might refer to a different M than ':load M'. Hopefully that won't lead to confusion.
Diffstat (limited to 'compiler/ghci')
-rw-r--r--compiler/ghci/InteractiveUI.hs4
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/ghci/InteractiveUI.hs b/compiler/ghci/InteractiveUI.hs
index 327cf149b9..e0c49ceed6 100644
--- a/compiler/ghci/InteractiveUI.hs
+++ b/compiler/ghci/InteractiveUI.hs
@@ -335,7 +335,7 @@ interactiveUI srcs maybe_exprs = withTerminalReset $ do
#endif
-- initial context is just the Prelude
- prel_mod <- GHC.findModule (GHC.mkModuleName "Prelude") Nothing
+ prel_mod <- GHC.lookupModule (GHC.mkModuleName "Prelude") Nothing
GHC.setContext [] [prel_mod]
default_editor <- liftIO $ findEditor
@@ -2356,7 +2356,7 @@ mkTickArray ticks
lookupModule :: String -> GHCi Module
lookupModule modName
- = GHC.findModule (GHC.mkModuleName modName) Nothing
+ = GHC.lookupModule (GHC.mkModuleName modName) Nothing
-- don't reset the counter back to zero?
discardActiveBreakPoints :: GHCi ()