diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2019-01-20 20:58:01 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2019-01-27 08:32:55 -0500 |
commit | 10faf44d97095b2f8516b6d449d266f6889dcd70 (patch) | |
tree | d1d0afdc5e54bef7d5c95619d1c86e372e4eff08 | |
parent | e7164384c26e9d177304ab77fdf6c16431832d7f (diff) | |
download | haskell-10faf44d97095b2f8516b6d449d266f6889dcd70.tar.gz |
Don't overwrite the set log_action when using --interactive
-ddump-json didn't work with --interactive as --interactive overwrote
the log_action in terms of defaultLogAction.
Reviewers: bgamari
Subscribers: rwbarton, thomie, carter
GHC Trac Issues: #14078
Differential Revision: https://phabricator.haskell.org/D4533
-rw-r--r-- | ghc/GHCi/UI.hs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ghc/GHCi/UI.hs b/ghc/GHCi/UI.hs index 10ca51124e..abb3d78fae 100644 --- a/ghc/GHCi/UI.hs +++ b/ghc/GHCi/UI.hs @@ -445,7 +445,10 @@ interactiveUI config srcs maybe_exprs = do lastErrLocationsRef <- liftIO $ newIORef [] progDynFlags <- GHC.getProgramDynFlags _ <- GHC.setProgramDynFlags $ - progDynFlags { log_action = ghciLogAction lastErrLocationsRef } + -- Ensure we don't override the user's log action lest we break + -- -ddump-json (#14078) + progDynFlags { log_action = ghciLogAction (log_action progDynFlags) + lastErrLocationsRef } when (isNothing maybe_exprs) $ do -- Only for GHCi (not runghc and ghc -e): @@ -536,9 +539,10 @@ resetLastErrorLocations = do st <- getGHCiState liftIO $ writeIORef (lastErrorLocations st) [] -ghciLogAction :: IORef [(FastString, Int)] -> LogAction -ghciLogAction lastErrLocations dflags flag severity srcSpan style msg = do - defaultLogAction dflags flag severity srcSpan style msg +ghciLogAction :: LogAction -> IORef [(FastString, Int)] -> LogAction +ghciLogAction old_log_action lastErrLocations + dflags flag severity srcSpan style msg = do + old_log_action dflags flag severity srcSpan style msg case severity of SevError -> case srcSpan of RealSrcSpan rsp -> modifyIORef lastErrLocations |