summaryrefslogtreecommitdiff
path: root/ghc
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2011-01-05 15:45:48 +0000
committerSimon Marlow <marlowsd@gmail.com>2011-01-05 15:45:48 +0000
commita852f1dd288c5a34b36a7f8bc21f4a338a19355c (patch)
tree1432bd5c69d7e7897b2b49e1a21a850d135c23c5 /ghc
parent4edbeb14e25f71824c53c524028d12440928707e (diff)
downloadhaskell-a852f1dd288c5a34b36a7f8bc21f4a338a19355c.tar.gz
fix up multi-line GHCi patch (#4316)
Diffstat (limited to 'ghc')
-rw-r--r--ghc/InteractiveUI.hs10
1 files changed, 5 insertions, 5 deletions
diff --git a/ghc/InteractiveUI.hs b/ghc/InteractiveUI.hs
index cf90ae78ba..278470fb1a 100644
--- a/ghc/InteractiveUI.hs
+++ b/ghc/InteractiveUI.hs
@@ -655,7 +655,7 @@ runOneCommand eh getCmd = do
ml <- lift $ isOptionSet Multiline
if ml
then do
- mb_stmt <- checkInputForLayout stmt getCmd
+ mb_stmt <- checkInputForLayout stmt 1 getCmd
case mb_stmt of
Nothing -> return $ Just True
Just ml_stmt -> do
@@ -667,14 +667,14 @@ runOneCommand eh getCmd = do
-- #4316
-- lex the input. If there is an unclosed layout context, request input
-checkInputForLayout :: String -> InputT GHCi (Maybe String)
+checkInputForLayout :: String -> Int -> InputT GHCi (Maybe String)
-> InputT GHCi (Maybe String)
-checkInputForLayout stmt getStmt = do
+checkInputForLayout stmt line_number getStmt = do
dflags' <- lift $ getDynFlags
let dflags = xopt_set dflags' Opt_AlternativeLayoutRule
st <- lift $ getGHCiState
let buf = stringToStringBuffer stmt
- loc = mkSrcLoc (fsLit (progname st)) (line_number st) 1
+ loc = mkSrcLoc (fsLit (progname st)) line_number 1
pstate = Lexer.mkPState dflags buf loc
case Lexer.unP goToEnd pstate of
(Lexer.POk _ False) -> return $ Just stmt
@@ -697,7 +697,7 @@ checkInputForLayout stmt getStmt = do
Nothing -> return Nothing
Just str -> if str == ""
then return $ Just stmt
- else checkInputForLayout (stmt++"\n"++str) getStmt
+ else checkInputForLayout (stmt++"\n"++str) (line_number+1) getStmt
where goToEnd = do
eof <- Lexer.nextIsEOF
if eof