summaryrefslogtreecommitdiff
path: root/compiler/GHC/Utils
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2020-03-17 18:44:51 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-05-01 10:37:39 -0400
commitde9fc995c2170bc34600ee3fc80393c67cfecad1 (patch)
tree71a179e2b899cf9253ada7bddea40ab3c1e1c3e6 /compiler/GHC/Utils
parentb3df9e780fb2f5658412c644849cd0f1e6f50331 (diff)
downloadhaskell-de9fc995c2170bc34600ee3fc80393c67cfecad1.tar.gz
Fully remove PprDebug
PprDebug was a pain to deal with consistently as it is implied by `-dppr-debug` but it isn't really a PprStyle. We remove it completely and query the appropriate SDoc flag instead (`sdocPprDebug`) via helpers (`getPprDebug` and its friends).
Diffstat (limited to 'compiler/GHC/Utils')
-rw-r--r--compiler/GHC/Utils/Outputable.hs37
1 files changed, 16 insertions, 21 deletions
diff --git a/compiler/GHC/Utils/Outputable.hs b/compiler/GHC/Utils/Outputable.hs
index b103d3494b..ba843cef30 100644
--- a/compiler/GHC/Utils/Outputable.hs
+++ b/compiler/GHC/Utils/Outputable.hs
@@ -76,7 +76,7 @@ module GHC.Utils.Outputable (
SDocContext (..), sdocWithContext,
getPprStyle, withPprStyle, setStyleColoured,
pprDeeper, pprDeeperList, pprSetDepth,
- codeStyle, userStyle, debugStyle, dumpStyle, asmStyle,
+ codeStyle, userStyle, dumpStyle, asmStyle,
qualName, qualModule, qualPackage,
mkErrStyle, defaultErrStyle, defaultDumpStyle, mkDumpStyle, defaultUserStyle,
mkUserStyle, cmdlineParserStyle, Depth(..),
@@ -155,12 +155,10 @@ data PprStyle
-- printed without uniques.
| PprDump PrintUnqualified
- -- For -ddump-foo; less verbose than PprDebug, but more than PprUser
+ -- For -ddump-foo; less verbose than in ppr-debug mode, but more than PprUser
-- Does not assume tidied code: non-external names
-- are printed with uniques.
- | PprDebug -- Full debugging output
-
| PprCode CodeStyle
-- Print code; either C or assembler
@@ -262,11 +260,10 @@ defaultDumpStyle = PprDump neverQualify
mkDumpStyle :: PrintUnqualified -> PprStyle
mkDumpStyle print_unqual = PprDump print_unqual
-defaultErrStyle :: DynFlags -> PprStyle
--- Default style for error messages, when we don't know PrintUnqualified
+-- | Default style for error messages, when we don't know PrintUnqualified
-- It's a bit of a hack because it doesn't take into account what's in scope
-- Only used for desugarer warnings, and typechecker errors in interface sigs
--- NB that -dppr-debug will still get into PprDebug style
+defaultErrStyle :: DynFlags -> PprStyle
defaultErrStyle dflags = mkErrStyle dflags neverQualify
-- | Style for printing error messages
@@ -281,9 +278,7 @@ mkUserStyle :: PrintUnqualified -> Depth -> PprStyle
mkUserStyle unqual depth = PprUser unqual depth Uncoloured
withUserStyle :: PrintUnqualified -> Depth -> SDoc -> SDoc
-withUserStyle unqual depth doc = sdocOption sdocPprDebug $ \case
- True -> withPprStyle PprDebug doc
- False -> withPprStyle (PprUser unqual depth Uncoloured) doc
+withUserStyle unqual depth doc = withPprStyle (PprUser unqual depth Uncoloured) doc
withErrStyle :: PrintUnqualified -> SDoc -> SDoc
withErrStyle unqual doc =
@@ -303,7 +298,6 @@ instance Outputable PprStyle where
ppr (PprUser {}) = text "user-style"
ppr (PprCode {}) = text "code-style"
ppr (PprDump {}) = text "dump-style"
- ppr (PprDebug {}) = text "debug-style"
{-
Orthogonal to the above printing styles are (possibly) some
@@ -457,23 +451,20 @@ dumpStyle :: PprStyle -> Bool
dumpStyle (PprDump {}) = True
dumpStyle _other = False
-debugStyle :: PprStyle -> Bool
-debugStyle PprDebug = True
-debugStyle _other = False
-
userStyle :: PprStyle -> Bool
userStyle (PprUser {}) = True
userStyle _other = False
+-- | Indicate if -dppr-debug mode is enabled
getPprDebug :: (Bool -> SDoc) -> SDoc
-getPprDebug d = getPprStyle $ \ sty -> d (debugStyle sty)
+getPprDebug d = sdocWithContext $ \ctx -> d (sdocPprDebug ctx)
+-- | Says what to do with and without -dppr-debug
ifPprDebug :: SDoc -> SDoc -> SDoc
--- ^ Says what to do with and without -dppr-debug
-ifPprDebug yes no = getPprDebug $ \ dbg -> if dbg then yes else no
+ifPprDebug yes no = getPprDebug $ \dbg -> if dbg then yes else no
+-- | Says what to do with -dppr-debug; without, return empty
whenPprDebug :: SDoc -> SDoc -- Empty for non-debug style
--- ^ Says what to do with -dppr-debug; without, return empty
whenPprDebug d = ifPprDebug d empty
-- | The analog of 'Pretty.printDoc_' for 'SDoc', which tries to make sure the
@@ -550,7 +541,11 @@ showSDocDump :: DynFlags -> SDoc -> String
showSDocDump dflags d = renderWithStyle (initSDocContext dflags defaultDumpStyle) d
showSDocDebug :: DynFlags -> SDoc -> String
-showSDocDebug dflags d = renderWithStyle (initSDocContext dflags PprDebug) d
+showSDocDebug dflags d = renderWithStyle ctx d
+ where
+ ctx = (initSDocContext dflags defaultDumpStyle)
+ { sdocPprDebug = True
+ }
renderWithStyle :: SDocContext -> SDoc -> String
renderWithStyle ctx sdoc
@@ -580,7 +575,7 @@ irrelevantNCols :: Int
irrelevantNCols = 1
isEmpty :: SDocContext -> SDoc -> Bool
-isEmpty ctx sdoc = Pretty.isEmpty $ runSDoc sdoc (ctx {sdocStyle = PprDebug})
+isEmpty ctx sdoc = Pretty.isEmpty $ runSDoc sdoc (ctx {sdocPprDebug = True})
docToSDoc :: Doc -> SDoc
docToSDoc d = SDoc (\_ -> d)