diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2019-01-21 01:58:01 (GMT) |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-04-01 06:43:57 (GMT) |
commit | 463a4e4de71b6a3385bbe6b3f74f8eac43fb3d37 (patch) | |
tree | 744b01fa57ce6c8ec2948f1428c9cf9120c460ec | |
parent | 882ed7d4882e80bb533630d913921888b8e6ddf1 (diff) | |
download | ghc-463a4e4de71b6a3385bbe6b3f74f8eac43fb3d37.zip ghc-463a4e4de71b6a3385bbe6b3f74f8eac43fb3d37.tar.gz ghc-463a4e4de71b6a3385bbe6b3f74f8eac43fb3d37.tar.bz2 |
Don't overwrite the set log_action when using --interactivecherry-pick-10faf44d
-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
(cherry picked from commit 10faf44d97095b2f8516b6d449d266f6889dcd70)
-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 10ca511..abb3d78 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 |