GhciMonad.resume should restore the program's argv and progname
authorSimon Marlow <marlowsd@gmail.com>
Wed, 21 Oct 2009 12:52:40 +0000 (12:52 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 21 Oct 2009 12:52:40 +0000 (12:52 +0000)
I discovered that single-stepping over getArgs gave the wrong answer
sometimes, because we were forgetting to set the program's argv and
progname when resuming at a breakpoint.

Test is ghci.debugger/scripts/getargs.script.

ghc/GhciMonad.hs

index 0b9239d..94bd9c2 100644 (file)
@@ -258,7 +258,13 @@ runStmt expr step = do
           GHC.runStmt expr step
 
 resume :: (SrcSpan -> Bool) -> GHC.SingleStep -> GHCi GHC.RunResult
-resume canLogSpan step = GHC.resume canLogSpan step
+resume canLogSpan step = do
+  st <- getGHCiState
+  reifyGHCi $ \x ->
+    withProgName (progname st) $
+    withArgs (args st) $
+      reflectGHCi x $ do
+        GHC.resume canLogSpan step
 
 -- --------------------------------------------------------------------------
 -- timing & statistics