projects
/
ghc-hetmet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
cea34a8
)
Make GhciMonad warning-free
author
Ian Lynagh
<igloo@earth.li>
Sat, 3 May 2008 23:51:35 +0000
(23:51 +0000)
committer
Ian Lynagh
<igloo@earth.li>
Sat, 3 May 2008 23:51:35 +0000
(23:51 +0000)
compiler/ghci/GhciMonad.hs
patch
|
blob
|
history
diff --git
a/compiler/ghci/GhciMonad.hs
b/compiler/ghci/GhciMonad.hs
index
7720b84
..
9202ddf
100644
(file)
--- a/
compiler/ghci/GhciMonad.hs
+++ b/
compiler/ghci/GhciMonad.hs
@@
-6,13
+6,6
@@
--
-----------------------------------------------------------------------------
--
-----------------------------------------------------------------------------
-{-# OPTIONS -w #-}
--- The above warning supression flag is a temporary kludge.
--- While working on this module you are encouraged to remove it and fix
--- any warnings in the module. See
--- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
--- for details
-
module GhciMonad where
#include "HsVersions.h"
module GhciMonad where
#include "HsVersions.h"
@@
-138,7
+131,7
@@
startGHCi g state = do ref <- newIORef state; unGHCi g ref
instance Monad GHCi where
(GHCi m) >>= k = GHCi $ \s -> m s >>= \a -> unGHCi (k a) s
instance Monad GHCi where
(GHCi m) >>= k = GHCi $ \s -> m s >>= \a -> unGHCi (k a) s
- return a = GHCi $ \s -> return a
+ return a = GHCi $ \_ -> return a
instance Functor GHCi where
fmap f m = m >>= return . f
instance Functor GHCi where
fmap f m = m >>= return . f
@@
-147,22
+140,36
@@
ghciHandleDyn :: Typeable t => (t -> GHCi a) -> GHCi a -> GHCi a
ghciHandleDyn h (GHCi m) = GHCi $ \s ->
Exception.catchDyn (m s) (\e -> unGHCi (h e) s)
ghciHandleDyn h (GHCi m) = GHCi $ \s ->
Exception.catchDyn (m s) (\e -> unGHCi (h e) s)
+getGHCiState :: GHCi GHCiState
getGHCiState = GHCi $ \r -> readIORef r
getGHCiState = GHCi $ \r -> readIORef r
+setGHCiState :: GHCiState -> GHCi ()
setGHCiState s = GHCi $ \r -> writeIORef r s
-- for convenience...
setGHCiState s = GHCi $ \r -> writeIORef r s
-- for convenience...
+getSession :: GHCi Session
getSession = getGHCiState >>= return . session
getSession = getGHCiState >>= return . session
+getPrelude :: GHCi Module
getPrelude = getGHCiState >>= return . prelude
GLOBAL_VAR(saved_sess, no_saved_sess, GHC.Session)
getPrelude = getGHCiState >>= return . prelude
GLOBAL_VAR(saved_sess, no_saved_sess, GHC.Session)
+
+no_saved_sess :: Session
no_saved_sess = error "no saved_ses"
no_saved_sess = error "no saved_ses"
+
+saveSession :: GHCi ()
saveSession = getSession >>= io . writeIORef saved_sess
saveSession = getSession >>= io . writeIORef saved_sess
+
+splatSavedSession :: GHCi ()
splatSavedSession = io (writeIORef saved_sess no_saved_sess)
splatSavedSession = io (writeIORef saved_sess no_saved_sess)
+
+restoreSession :: IO Session
restoreSession = readIORef saved_sess
restoreSession = readIORef saved_sess
+getDynFlags :: GHCi DynFlags
getDynFlags = do
s <- getSession
io (GHC.getSessionDynFlags s)
getDynFlags = do
s <- getSession
io (GHC.getSessionDynFlags s)
+setDynFlags :: DynFlags -> GHCi [PackageId]
setDynFlags dflags = do
s <- getSession
io (GHC.setSessionDynFlags s dflags)
setDynFlags dflags = do
s <- getSession
io (GHC.setSessionDynFlags s dflags)
@@
-183,7
+190,7
@@
unsetOption opt
setGHCiState (st{ options = filter (/= opt) (options st) })
io :: IO a -> GHCi a
setGHCiState (st{ options = filter (/= opt) (options st) })
io :: IO a -> GHCi a
-io m = GHCi { unGHCi = \s -> m >>= return }
+io m = GHCi { unGHCi = \_ -> m >>= return }
printForUser :: SDoc -> GHCi ()
printForUser doc = do
printForUser :: SDoc -> GHCi ()
printForUser doc = do
@@
-302,7
+309,7
@@
initInterpBuffering session
mb_stderr_ptr <- ObjLink.lookupSymbol "base_GHCziHandle_stderr_closure"
let f ref (Just ptr) = writeIORef ref ptr
mb_stderr_ptr <- ObjLink.lookupSymbol "base_GHCziHandle_stderr_closure"
let f ref (Just ptr) = writeIORef ref ptr
- f ref Nothing = panic "interactiveUI:setBuffering2"
+ f _ Nothing = panic "interactiveUI:setBuffering2"
zipWithM f [stdin_ptr,stdout_ptr,stderr_ptr]
[mb_stdin_ptr,mb_stdout_ptr,mb_stderr_ptr]
return ()
zipWithM f [stdin_ptr,stdout_ptr,stderr_ptr]
[mb_stdin_ptr,mb_stdout_ptr,mb_stderr_ptr]
return ()