|
|
|
|
|
| Description |
This module defines classes and functions for pretty-printing. It also
exports a number of helpful debugging and other utilities such as trace and panic.
The interface to this module is very similar to the standard Hughes-PJ pretty printing
module, except that it exports a number of additional functions that are rarely used,
and works over the SDoc type.
|
|
| Synopsis |
|
|
|
|
| Type classes
|
|
| class Outputable a where |
| Class designating that some type has an SDoc representation
| | | Methods | | | Instances | | Outputable Bool | | Outputable Char | | Outputable Int | | Outputable Word32 | | Outputable () | | Outputable GlobalIdDetails | | Outputable PackageId | | Outputable ModuleName | | Outputable Module | | Outputable OccName | | Outputable FastString | | Outputable InlineSpec | | Outputable Activation | | Outputable SuccessFlag | | Outputable StrictnessMark | | Outputable OccInfo | | Outputable OverlapFlag | | Outputable RecFlag | | Outputable TopLevelFlag | | Outputable FixityDirection | | Outputable Fixity | | Outputable WarningTxt | | Outputable FunctionOrData | | Outputable Unique | | Outputable SrcSpan | | Outputable SrcLoc | | Outputable MachHint | | Outputable MachRep | | Outputable SlotSet | | Outputable StackPlacement | | Outputable SlotClass | | Outputable MetaDetails | | Outputable Fingerprint | | Outputable BlockId | | Outputable TyThing | | Outputable PredType | | Outputable Type | | Outputable TyCon | | Outputable Name | | Outputable ModLocation | | Outputable DNCallSpec | | Outputable CCallConv | | Outputable CCallSpec | | Outputable CExportSpec | | Outputable Safety | | Outputable ForeignCall | | Outputable DataCon | | Outputable ImportSpec | | Outputable Parent | | Outputable GlobalRdrElt | | Outputable RdrName | | Outputable GhcMode | | Outputable Var | | Outputable InScopeSet | | Outputable StrictSig | | Outputable DmdResult | | Outputable DmdType | | Outputable Demands | | Outputable Demand | | Outputable StableLoc | | Outputable VolatileLoc | | Outputable CgIdInfo | | Outputable CostCentre | | Outputable CostCentreStack | | Outputable DefMeth | | Outputable Class | | Outputable PrimRep | | Outputable TvSubst | | Outputable HsBang | | Outputable OverLitVal | | Outputable HsLit | | Outputable Literal | | Outputable UnfoldingGuidance | | Outputable Unfolding | | Outputable CoreRule | | Outputable AltCon | | Outputable PrimOp | | Outputable TickBoxOp | | Outputable LBVarInfo | | Outputable CLabel | | Outputable GlobalReg | | Outputable LocalReg | | Outputable CmmLit | | Outputable Area | | Outputable CmmReg | | Outputable CmmExpr | | Outputable Refinement | | Outputable CgRep | | Outputable HsWrapper | | Outputable FoType | | Outputable ForeignExport | | Outputable ForeignImport | | Outputable NewOrData | | Outputable IfaceTyCon | | Outputable IfacePredType | | Outputable IfaceType | | Outputable IfaceBndr | | Outputable IfaceConAlt | | Outputable IfaceNote | | Outputable IfaceExpr | | Outputable IfaceInfoItem | | Outputable IfaceIdInfo | | Outputable IfaceRule | | Outputable IfaceFamInst | | Outputable IfaceInst | | Outputable IfaceClassOp | | Outputable IfaceDecl | | Outputable UpdateFlag | | Outputable AltType | | Outputable C_SRT | | Outputable CmmStatic | | Outputable CmmSafety | | Outputable CmmStmt | | Outputable CmmInfo | | Outputable Convention | | Outputable Last | | Outputable Middle | | Outputable Placement | | Outputable Protocol | | Outputable Status | | Outputable AvailRegs | | Outputable DualLive | | Outputable Reg | | Outputable RegClass | | Outputable Instr | | Outputable LiveInfo | | Outputable LiveInstr | | Outputable Loc | | Outputable SpillStats | | Outputable Store | | Outputable RegAllocStats | | Outputable BreakInfo | | Outputable BCInstr | | Outputable UnlinkedBCO | | Outputable CompiledByteCode | | Outputable FloatingBind | | Outputable Subst | | Outputable CallCtxt | | Outputable Level | | Outputable ArgOcc | | Outputable HowBound | | Outputable Value | | Outputable Instance | | Outputable FamInst | | Outputable Unlinked | | Outputable Linkable | | Outputable ModSummary | | Outputable FixItem | | Outputable Warnings | | Outputable CoreModule | | Outputable TargetId | | Outputable Target | | Outputable Discr | | Outputable TickInfo | | Outputable Tick | | Outputable FloatFlag | | Outputable Floats | | Outputable SimplSR | | Outputable DupFlag | | Outputable SimplCont | | Outputable CallKey | | Outputable UsageDetails | | Outputable InstOrigin | | Outputable Inst | | Outputable WhereFrom | | Outputable RefinementVisibility | | Outputable TcTyThing | | Outputable ThStage | | Outputable EquationInfo | | Outputable RewriteInst | | Outputable EqConfig | | Outputable AvailHow | | Outputable Avails | | Outputable Outer | | Outputable ClosureType | | Outputable Term | | Outputable TcSigInfo | | Outputable a => Outputable ([] a) | | Outputable a => Outputable (Maybe a) | | Outputable name => Outputable (IPName name) | | Outputable e => Outputable (Located e) | | OutputableBndr name => Outputable (Pat name) | | OutputableBndr id => Outputable (HsQuasiQuote id) | | Outputable (HsDoc a) | | OutputableBndr id => Outputable (HsSplice id) | | OutputableBndr id => Outputable (HsExpr id) | | Outputable a => Outputable (UniqFM a) | | Outputable a => Outputable (UniqFM a) | | Outputable a => Outputable (Lazy a) | | Outputable a => Outputable (Bag a) | | Outputable a => Outputable (SCC a) | | Outputable node => Outputable (Edge node) | | Outputable node => Outputable (Graph node) | | Outputable a => Outputable (OccEnv a) | | Outputable name => Outputable (IE name) | | Outputable name => Outputable (ImportDecl name) | | Outputable a => Outputable (NameEnv a) | | Outputable name => Outputable (HsTyVarBndr name) | | OutputableBndr name => Outputable (HsType name) | | OutputableBndr name => Outputable (HsPred name) | | OutputableBndr id => Outputable (HsOverLit id) | | Outputable b => Outputable (TaggedBndr b) | | OutputableBndr b => Outputable (Bind b) | | OutputableBndr b => Outputable (Expr b) | | Outputable l => Outputable (ZLast l) | | Outputable name => Outputable (FixitySig name) | | OutputableBndr name => Outputable (Sig name) | | OutputableBndr id => Outputable (IPBind id) | | OutputableBndr id => Outputable (HsIPBinds id) | | OutputableBndr name => Outputable (WarnDecl name) | | Outputable (DocDecl name) | | OutputableBndr name => Outputable (RuleBndr name) | | OutputableBndr name => Outputable (RuleDecl name) | | OutputableBndr name => Outputable (ForeignDecl name) | | OutputableBndr name => Outputable (DefaultDecl name) | | OutputableBndr name => Outputable (DerivDecl name) | | OutputableBndr name => Outputable (InstDecl name) | | OutputableBndr name => Outputable (ConDecl name) | | OutputableBndr name => Outputable (TyClDecl name) | | OutputableBndr name => Outputable (SpliceDecl name) | | OutputableBndr name => Outputable (HsGroup name) | | OutputableBndr name => Outputable (HsDecl name) | | OutputableBndr id => Outputable (ArithSeqInfo id) | | OutputableBndr id => Outputable (HsBracket id) | | OutputableBndr id => Outputable (HsCmdTop id) | | OutputableBndr name => Outputable (HsModule name) | | Outputable bdee => Outputable (GenStgArg bdee) | | Outputable a => Outputable (CmmKinded a) | | Outputable instr => Outputable (GenBasicBlock instr) | | Outputable instr => Outputable (ListGraph instr) | | Outputable m => Outputable (ExtendWithSpills m) | | Outputable a => Outputable (ProtoBCO a) | | Outputable n => Outputable (GenAvailInfo n) | | (Outputable a, Outputable b) => Outputable (Either a b) | | (Outputable a, Outputable b) => Outputable ((,) a b) | | (Outputable key, Outputable elt) => Outputable (FiniteMap key elt) | | (Outputable m, Outputable l, LastNode l) => Outputable (LGraph m l) | | (Outputable m, Outputable l, LastNode l) => Outputable (Graph m l) | | (Outputable m, Outputable l, LastNode l) => Outputable (Block m l) | | (Outputable m, Outputable l) => Outputable (ZTail m l) | | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsBindLR idL idR) | | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsValBindsLR idL idR) | | (OutputableBndr idL, OutputableBndr idR) => Outputable (HsLocalBindsLR idL idR) | | (OutputableBndr id, Outputable arg) => Outputable (HsRecField id arg) | | (OutputableBndr id, Outputable arg) => Outputable (HsRecFields id arg) | | (OutputableBndr idL, OutputableBndr idR) => Outputable (StmtLR idL idR) | | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgRhs bndr bdee) | | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgExpr bndr bdee) | | (Outputable bndr, Outputable bdee, Ord bdee) => Outputable (GenStgBinding bndr bdee) | | (Outputable a, Outputable b, Outputable c) => Outputable ((,,) a b c) | | (Outputable d, Outputable info, Outputable i) => Outputable (GenCmmTop d info i) | | (Outputable d, Outputable info, Outputable g) => Outputable (GenCmm d info g) | | (Outputable a, Outputable b, Outputable c, Outputable d) => Outputable ((,,,) a b c d) | | (Outputable a, Outputable b, Outputable c, Outputable d, Outputable e) => Outputable ((,,,,) a b c d e) |
|
|
|
| class Outputable a => OutputableBndr a where |
| When we print a binder, we often want to print its type too.
The OutputableBndr class encapsulates this idea.
| | | Methods | | | Instances | |
|
|
| Pretty printing combinators
|
|
| type SDoc = PprStyle -> Doc |
|
| docToSDoc :: Doc -> SDoc |
|
| interppSP :: Outputable a => [a] -> SDoc |
| Returns the seperated concatenation of the pretty printed things.
|
|
| interpp'SP :: Outputable a => [a] -> SDoc |
| Returns the comma-seperated concatenation of the pretty printed things.
|
|
| pprQuotedList :: Outputable a => [a] -> SDoc |
Returns the comma-seperated concatenation of the quoted pretty printed things.
[x,y,z] ==> `x', `y', `z'
|
|
| pprWithCommas |
| :: | | | => a -> SDoc | The pretty printing function to use
| | -> [a] | The things to be pretty printed
| | -> SDoc | SDoc where the things have been pretty printed,
comma-separated and finally packed into a paragraph.
|
|
|
| empty :: SDoc |
|
| nest :: Int -> SDoc -> SDoc |
| Indent SDoc some specified amount
|
|
| char :: Char -> SDoc |
|
| text :: String -> SDoc |
|
| ftext :: FastString -> SDoc |
|
| ptext :: LitString -> SDoc |
|
| int :: Int -> SDoc |
|
| integer :: Integer -> SDoc |
|
| float :: Float -> SDoc |
|
| double :: Double -> SDoc |
|
| rational :: Rational -> SDoc |
|
| parens :: SDoc -> SDoc |
|
| cparen :: Bool -> SDoc -> SDoc |
|
| brackets :: SDoc -> SDoc |
|
| braces :: SDoc -> SDoc |
|
| quotes :: SDoc -> SDoc |
|
| doubleQuotes :: SDoc -> SDoc |
|
| angleBrackets :: SDoc -> SDoc |
|
| semi :: SDoc |
|
| comma :: SDoc |
|
| colon :: SDoc |
|
| dcolon :: SDoc |
|
| space :: SDoc |
|
| equals :: SDoc |
|
| dot :: SDoc |
|
| arrow :: SDoc |
|
| lparen :: SDoc |
|
| rparen :: SDoc |
|
| lbrack :: SDoc |
|
| rbrack :: SDoc |
|
| lbrace :: SDoc |
|
| rbrace :: SDoc |
|
| underscore :: SDoc |
|
| (<>) :: SDoc -> SDoc -> SDoc |
| Join two SDoc together horizontally without a gap
|
|
| (<+>) :: SDoc -> SDoc -> SDoc |
| Join two SDoc together horizontally with a gap between them
|
|
| hcat :: [SDoc] -> SDoc |
| Concatenate SDoc horizontally
|
|
| hsep :: [SDoc] -> SDoc |
| Concatenate SDoc horizontally with a space between each one
|
|
| ($$) :: SDoc -> SDoc -> SDoc |
| Join two SDoc together vertically; if there is
no vertical overlap it dovetails the two onto one line
|
|
| ($+$) :: SDoc -> SDoc -> SDoc |
| Join two SDoc together vertically
|
|
| vcat :: [SDoc] -> SDoc |
| Concatenate SDoc vertically with dovetailing
|
|
| sep :: [SDoc] -> SDoc |
| Separate: is either like hsep or like vcat, depending on what fits
|
|
| cat :: [SDoc] -> SDoc |
| Catenate: is either like hcat or like vcat, depending on what fits
|
|
| fsep :: [SDoc] -> SDoc |
| A paragraph-fill combinator. It's much like sep, only it
keeps fitting things on one line until it can't fit any more.
|
|
| fcat :: [SDoc] -> SDoc |
| This behaves like fsep, but it uses <> for horizontal conposition rather than <+>
|
|
| hang |
| :: SDoc | The header
| | -> Int | Amount to indent the hung body
| | -> SDoc | The hung body, indented and placed below the header
| | -> SDoc | |
|
|
| punctuate |
| :: SDoc | The punctuation
| | -> [SDoc] | The list that will have punctuation added between every adjacent pair of elements
| | -> [SDoc] | Punctuated list
|
|
|
| speakNth :: Int -> SDoc |
Converts an integer to a verbal index:
speakNth 1 = text "first"
speakNth 5 = text "fifth"
speakNth 21 = text "21st"
|
|
| speakNTimes :: Int -> SDoc |
Converts a strictly positive integer into a number of times:
speakNTimes 1 = text "once"
speakNTimes 2 = text "twice"
speakNTimes 4 = text "4 times"
|
|
| speakN :: Int -> SDoc |
Converts an integer to a verbal multiplicity:
speakN 0 = text "none"
speakN 5 = text "five"
speakN 10 = text "10"
|
|
| speakNOf :: Int -> SDoc -> SDoc |
Converts an integer and object description to a statement about the
multiplicity of those objects:
speakNOf 0 (text "melon") = text "no melons"
speakNOf 1 (text "melon") = text "one melon"
speakNOf 3 (text "melon") = text "three melons"
|
|
| plural :: [a] -> SDoc |
Determines the pluralisation suffix appropriate for the length of a list:
plural [] = char 's'
plural ["Hello"] = empty
plural ["Hello", "World"] = char 's'
|
|
| Converting SDoc into strings and outputing it
|
|
| printSDoc :: SDoc -> PprStyle -> IO () |
|
| printErrs :: Doc -> IO () |
|
| hPrintDump :: Handle -> SDoc -> IO () |
|
| printDump :: SDoc -> IO () |
|
| printForC :: Handle -> SDoc -> IO () |
|
| printForAsm :: Handle -> SDoc -> IO () |
|
| printForUser :: Handle -> PrintUnqualified -> SDoc -> IO () |
|
| printForUserPartWay :: Handle -> Int -> PrintUnqualified -> SDoc -> IO () |
|
| pprCode :: CodeStyle -> SDoc -> SDoc |
|
| mkCodeStyle :: CodeStyle -> PprStyle |
|
| showSDoc :: SDoc -> String |
|
| showSDocForUser :: PrintUnqualified -> SDoc -> String |
|
| showSDocDebug :: SDoc -> String |
|
| showSDocDump :: SDoc -> String |
|
| showSDocUnqual :: SDoc -> String |
|
| showsPrecSDoc :: Int -> SDoc -> ShowS |
|
| pprInfixVar :: Bool -> SDoc -> SDoc |
|
| pprPrefixVar :: Bool -> SDoc -> SDoc |
|
| pprHsChar :: Char -> SDoc |
| Special combinator for showing character literals.
|
|
| pprHsString :: FastString -> SDoc |
| Special combinator for showing string literals.
|
|
| pprHsInfix :: Outputable name => name -> SDoc |
|
| pprHsVar :: Outputable name => name -> SDoc |
|
| pprFastFilePath :: FastString -> SDoc |
|
| Controlling the style in which output is printed
|
|
| data BindingSite |
| BindingSite is used to tell the thing that prints binder what
language construct is binding the identifier. This can be used
to decide how much info to print.
| | Constructors | | LambdaBind | | | CaseBind | | | LetBind | |
|
|
|
| data PprStyle |
|
| data CodeStyle |
|
|
| type PrintUnqualified = (QueryQualifyName, QueryQualifyModule) |
|
| alwaysQualify :: PrintUnqualified |
|
| neverQualify :: PrintUnqualified |
|
| data QualifyName |
| Constructors | | NameUnqual | | | NameQual ModuleName | | | NameNotInScope1 | | | NameNotInScope2 | |
|
|
|
| getPprStyle :: (PprStyle -> SDoc) -> SDoc |
|
| withPprStyle :: PprStyle -> SDoc -> SDoc |
|
| withPprStyleDoc :: PprStyle -> SDoc -> Doc |
|
| pprDeeper :: SDoc -> SDoc |
|
| pprDeeperList :: ([SDoc] -> SDoc) -> [SDoc] -> SDoc |
|
| pprSetDepth :: Int -> SDoc -> SDoc |
|
| codeStyle :: PprStyle -> Bool |
|
| userStyle :: PprStyle -> Bool |
|
| debugStyle :: PprStyle -> Bool |
|
| dumpStyle :: PprStyle -> Bool |
|
| asmStyle :: PprStyle -> Bool |
|
| ifPprDebug :: SDoc -> SDoc |
|
| qualName :: PprStyle -> QueryQualifyName |
|
| qualModule :: PprStyle -> QueryQualifyModule |
|
| mkErrStyle :: PrintUnqualified -> PprStyle |
| Style for printing error messages
|
|
| defaultErrStyle :: PprStyle |
|
| defaultDumpStyle :: PprStyle |
|
| defaultUserStyle :: PprStyle |
|
| mkUserStyle :: PrintUnqualified -> Depth -> PprStyle |
|
| data Depth |
|
|
| Error handling and debugging utilities
|
|
| pprPanic :: String -> SDoc -> a |
| Throw an exception saying bug in GHC
|
|
| assertPprPanic :: String -> Int -> SDoc -> a |
| Panic with an assertation failure, recording the given file and line number.
Should typically be accessed with the ASSERT family of macros
|
|
| pprPanicFastInt :: String -> SDoc -> FastInt |
| Specialization of pprPanic that can be safely used with FastInt
|
|
| pprPgmError :: String -> SDoc -> a |
| Throw an exception saying bug in pgm being compiled (used for unusual program errors)
|
|
| pprTrace :: String -> SDoc -> a -> a |
| If debug output is on, show some SDoc on the screen
|
|
| warnPprTrace :: Bool -> String -> Int -> SDoc -> a -> a |
| Just warn about an assertion failure, recording the given file and line number.
Should typically be accessed with the WARN macros
|
|
| trace |
|
| pgmError :: String -> a |
|
| panic :: String -> a |
|
| panicFastInt :: String -> FastInt |
|
| assertPanic :: String -> Int -> a |
|
| Produced by Haddock version 2.4.2 |