ghc-8.2.1: The GHC API

Safe HaskellNone
LanguageHaskell2010

Outputable

Contents

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 Source #

Class designating that some type has an SDoc representation

Methods

ppr :: a -> SDoc Source #

pprPrec :: Rational -> a -> SDoc Source #

Instances

Outputable Bool # 
Outputable Char # 
Outputable Int # 

Methods

ppr :: Int -> SDoc Source #

pprPrec :: Rational -> Int -> SDoc Source #

Outputable Int32 # 
Outputable Int64 # 
Outputable Ordering # 
Outputable Word # 
Outputable Word16 # 
Outputable Word32 # 
Outputable () # 

Methods

ppr :: () -> SDoc Source #

pprPrec :: Rational -> () -> SDoc Source #

Outputable Fingerprint # 
Outputable Extension # 
Outputable Serialized # 
Outputable Name # 
Outputable OccName # 
Outputable PrimOp # 
Outputable TyCon # 
Outputable FastString # 
Outputable ComponentId # 
Outputable InstalledUnitId # 
Outputable UnitId # 
Outputable ModuleName # 
Outputable Module # 
Outputable QualifyName # 
Outputable PprStyle # 
Outputable TyBinder # 
Outputable TCvSubst # 
Outputable UnivCoProvenance # 
Outputable Coercion # 
Outputable TyThing # 
Outputable Type # 
Outputable MetaDetails # 
Outputable SrcSpan # 
Outputable RealSrcSpan # 
Outputable SrcLoc # 
Outputable RealSrcLoc # 
Outputable IdDetails # 
Outputable HsDocString # 
Outputable IntWithInf # 
Outputable FractionalLit # 
Outputable InlineSpec # 
Outputable InlinePragma # 
Outputable RuleMatchInfo # 
Outputable Activation # 
Outputable CompilerPhase # 
Outputable SourceText # 
Outputable SuccessFlag # 
Outputable TailCallInfo # 
Outputable OccInfo # 
Outputable OverlapMode # 
Outputable OverlapFlag # 
Outputable DerivStrategy # 
Outputable Origin # 
Outputable RecFlag # 
Outputable Boxity # 
Outputable TopLevelFlag # 
Outputable LexicalFixity # 
Outputable FixityDirection # 
Outputable Fixity # 
Outputable WarningTxt # 
Outputable StringLiteral # 
Outputable FunctionOrData # 
Outputable SwapFlag # 
Outputable OneShotInfo # 
Outputable LeftOrRight # 
Outputable Unique # 
Outputable RegClass # 
Outputable Reg #

Print a reg in a generic manner If you want the architecture specific names, then use the pprReg function from the appropriate Ppr module.

Methods

ppr :: Reg -> SDoc Source #

pprPrec :: Rational -> Reg -> SDoc Source #

Outputable RealReg # 
Outputable VirtualReg # 
Outputable DefUnitId # 
Outputable InstalledModule # 
Outputable IndefModule # 
Outputable IndefUnitId # 
Outputable ModLocation # 
Outputable PackageName # 
Outputable SourcePackageId # 
Outputable CType # 
Outputable Header # 
Outputable CCallConv # 
Outputable CCallSpec # 
Outputable CExportSpec # 
Outputable Safety # 
Outputable ForeignCall # 
Outputable Phase # 
Outputable PackageFlag # 
Outputable ModRenaming # 
Outputable PackageArg # 
Outputable GhcMode # 
Outputable SafeHaskellMode # 
Outputable Language # 
Outputable WarnReason # 
Outputable ArgDescr # 
Outputable ClosureTypeInfo # 
Outputable SMRep # 
Outputable StgHalfWord # 
Outputable StgWord # 
Outputable Annotation # 
Outputable ModuleOrigin # 
Outputable Width # 
Outputable CmmType # 
Outputable AvailInfo # 
Outputable ImportSpec # 
Outputable Parent # 
Outputable GlobalRdrElt # 
Outputable LocalRdrEnv # 
Outputable RdrName # 
Outputable AnnotationComment # 
Outputable AnnKeywordId # 
Outputable Token # 
Outputable ArgFlag # 
Outputable Var # 

Methods

ppr :: Var -> SDoc Source #

pprPrec :: Rational -> Var -> SDoc Source #

Outputable PatSyn # 
Outputable EqSpec # 
Outputable DataCon # 
Outputable ConLike # 
Outputable CostCentreStack # 
Outputable CostCentre # 
Outputable CoAxiomRule # 
Outputable Role # 
Outputable CoAxBranch # 
Outputable LiftingContext # 
Outputable Class # 
Outputable PrimElemRep # 
Outputable PrimRep # 
Outputable FamTyConFlav # 
Outputable AlgTyConFlav # 
Outputable IfaceTcArgs # 
Outputable IfaceCoercion # 
Outputable IfaceTyLit # 
Outputable IfaceTyCon # 
Outputable IfaceType # 
Outputable IfaceBndr # 
Outputable InScopeSet # 
Outputable CoercionHole # 
Outputable EqRel # 
Outputable Literal # 
Outputable StrictnessMark # 
Outputable SrcUnpackedness # 
Outputable SrcStrictness # 
Outputable HsImplBang # 
Outputable HsSrcBang # 
Outputable SlotTy # 
Outputable StrictSig # 
Outputable DmdType # 
Outputable CPRResult # 
Outputable TypeShape # 
Outputable Count # 
Outputable UseDmd # 
Outputable StrDmd # 
Outputable AltCon # 
Outputable FamInstMatch # 
Outputable FamInst # 
Outputable LevityInfo # 
Outputable TickBoxOp # 
Outputable CafInfo # 
Outputable RecSelParent # 
Outputable UnVarGraph # 
Outputable UnVarSet # 
Outputable PrimCall # 
Outputable CgBreakInfo # 
Outputable UnlinkedBCO # 
Outputable CompiledByteCode # 
Outputable CoreStats # 
Outputable UpdateFlag # 
Outputable AltType # 
Outputable ShowHowMuch # 
Outputable IfaceJoinInfo # 
Outputable IfaceConAlt # 
Outputable IfaceExpr # 
Outputable IfaceIdDetails # 
Outputable IfaceUnfolding # 
Outputable IfaceInfoItem # 
Outputable IfaceIdInfo # 
Outputable IfaceCompleteMatch # 
Outputable IfaceAnnotation # 
Outputable IfaceRule # 
Outputable IfaceFamInst # 
Outputable IfaceClsInst # 
Outputable IfaceAT # 
Outputable IfaceClassOp # 
Outputable IfaceTyConParent # 
Outputable IfaceDecl # 
Outputable ForeignLabelSource # 
Outputable CLabel # 
Outputable CmmTickScope # 
Outputable LlvmCastOp # 
Outputable LlvmCmpOp # 
Outputable LlvmMachOp # 
Outputable LlvmLinkageType # 
Outputable LlvmCallConvention # 
Outputable LlvmFuncAttr # 
Outputable LlvmParamAttr # 
Outputable LlvmFunctionDecl # 
Outputable LlvmStatic # 
Outputable LlvmLit # 
Outputable LlvmVar # 
Outputable LlvmType # 
Outputable MetaExpr # 
Outputable MetaId # 
Outputable LiveInfo # 
Outputable Loc # 

Methods

ppr :: Loc -> SDoc Source #

pprPrec :: Rational -> Loc -> SDoc Source #

Outputable SpillStats # 
Outputable UnwindExpr # 
Outputable UnwindPoint # 
Outputable DebugBlock # 
Outputable Status # 
Outputable ParamLocation # 
Outputable TopSRT # 
Outputable CandidatesQTvs # 
Outputable TcLevel # 
Outputable InferResult # 
Outputable ExpType # 
Outputable EvCallStack # 
Outputable EvLit # 
Outputable EvTypeable # 
Outputable EvTerm # 
Outputable EvBind # 
Outputable EvBindMap # 
Outputable EvBindsVar # 
Outputable TcEvBinds # 
Outputable HsWrapper # 
Outputable HsTyLit # 
Outputable HsIPName # 
Outputable OverLitVal # 
Outputable HsLit # 
Outputable TcSpecPrag # 
Outputable CgLoc # 
Outputable Sequel # 
Outputable CgIdInfo # 
Outputable ArgRep # 
Outputable ClsInst # 
Outputable DocDecl # 
Outputable ForeignExport # 
Outputable ForeignImport # 
Outputable NewOrData # 
Outputable PendingTcSplice # 
Outputable PendingRnSplice # 
Outputable SpliceDecoration # 
Outputable UnboundVar # 
Outputable PmLit # 
Outputable PmExpr # 
Outputable CompleteMatch # 
Outputable Unlinked # 
Outputable Linkable # 
Outputable IfaceTrustInfo # 
Outputable IfaceVectInfo # 
Outputable VectInfo # 
Outputable ModSummary # 
Outputable FixItem # 
Outputable InteractiveImport # 
Outputable SptEntry # 
Outputable TargetId # 
Outputable Target # 
Outputable TypeOrKind # 
Outputable ErrorThing # 
Outputable CtOrigin # 
Outputable SkolemInfo # 
Outputable SubGoalDepth # 
Outputable CtFlavour # 
Outputable CtEvidence # 
Outputable TcEvDest # 
Outputable ImplicStatus # 
Outputable Implication # 
Outputable WantedConstraints # 
Outputable Ct # 

Methods

ppr :: Ct -> SDoc Source #

pprPrec :: Rational -> Ct -> SDoc Source #

Outputable TcPatSynInfo # 
Outputable TcIdSigInst # 
Outputable TcIdSigInfo # 
Outputable TcSigInfo # 
Outputable WhereFrom # 
Outputable IdBindingInfo # 
Outputable PromotionErr # 
Outputable TcTyThing # 
Outputable ThStage # 
Outputable TcIdBinder # 
Outputable PhasePlus # 
Outputable HsComponentId # 
Outputable FloatBind # 
Outputable Subst # 
Outputable CallCtxt # 
Outputable ArgSummary # 
Outputable Tick # 
Outputable FloatOutSwitches # 
Outputable SimplifierMode # 
Outputable CoreToDo # 
Outputable Floats # 
Outputable SimplSR # 
Outputable ArgSpec # 
Outputable DupFlag # 
Outputable SimplCont # 
Outputable FloatSpec # 
Outputable Level # 
Outputable HsSigCtxt # 
Outputable ClosureType # 
Outputable Term # 
Outputable InertCans # 
Outputable InertSet # 
Outputable WorkList # 
Outputable FlattenMode # 
Outputable InferMode # 
Outputable ThetaOrigin # 
Outputable PredOrigin # 
Outputable DerivSpecMechanism # 
Outputable BCInstr # 
Outputable LetBndrSpec # 
Outputable EquationInfo # 
Outputable DsMatchContext # 
Outputable CompRepr # 
Outputable ProdRepr # 
Outputable ConRepr # 
Outputable SumRepr # 
Outputable DwarfFrameBlock # 
Outputable CoreModule # 
Outputable a => Outputable [a] # 

Methods

ppr :: [a] -> SDoc Source #

pprPrec :: Rational -> [a] -> SDoc Source #

Outputable a => Outputable (Maybe a) # 

Methods

ppr :: Maybe a -> SDoc Source #

pprPrec :: Rational -> Maybe a -> SDoc Source #

Outputable elt => Outputable (IntMap elt) # 

Methods

ppr :: IntMap elt -> SDoc Source #

pprPrec :: Rational -> IntMap elt -> SDoc Source #

Outputable a => Outputable (SCC a) # 

Methods

ppr :: SCC a -> SDoc Source #

pprPrec :: Rational -> SCC a -> SDoc Source #

Outputable a => Outputable (Set a) # 

Methods

ppr :: Set a -> SDoc Source #

pprPrec :: Rational -> Set a -> SDoc Source #

Outputable a => Outputable (Pair a) # 

Methods

ppr :: Pair a -> SDoc Source #

pprPrec :: Rational -> Pair a -> SDoc Source #

Outputable a => Outputable (OrdList a) # 
Outputable (DefMethSpec ty) # 
Outputable a => Outputable (UniqFM a) # 

Methods

ppr :: UniqFM a -> SDoc Source #

pprPrec :: Rational -> UniqFM a -> SDoc Source #

Outputable a => Outputable (UniqSet a) # 
Outputable a => Outputable (UniqDFM a) # 
OutputableBndr a => Outputable (BooleanFormula a) # 
Outputable node => Outputable (Graph node) # 

Methods

ppr :: Graph node -> SDoc Source #

pprPrec :: Rational -> Graph node -> SDoc Source #

Outputable a => Outputable (Bag a) # 

Methods

ppr :: Bag a -> SDoc Source #

pprPrec :: Rational -> Bag a -> SDoc Source #

Outputable a => Outputable (OccEnv a) # 

Methods

ppr :: OccEnv a -> SDoc Source #

pprPrec :: Rational -> OccEnv a -> SDoc Source #

Outputable a => Outputable (FieldLbl a) # 
(HasOccName name, OutputableBndr name) => Outputable (IE name) # 

Methods

ppr :: IE name -> SDoc Source #

pprPrec :: Rational -> IE name -> SDoc Source #

(HasOccName name, OutputableBndr name) => Outputable (IEWrappedName name) # 
(OutputableBndr name, HasOccName name) => Outputable (ImportDecl name) # 

Methods

ppr :: ImportDecl name -> SDoc Source #

pprPrec :: Rational -> ImportDecl name -> SDoc Source #

Outputable name => Outputable (AnnTarget name) # 

Methods

ppr :: AnnTarget name -> SDoc Source #

pprPrec :: Rational -> AnnTarget name -> SDoc Source #

Outputable (CoAxiom br) # 

Methods

ppr :: CoAxiom br -> SDoc Source #

pprPrec :: Rational -> CoAxiom br -> SDoc Source #

Outputable a => Outputable (UnifyResultM a) # 
Outputable b => Outputable (TaggedBndr b) # 
Outputable a => Outputable (CoreMap a) # 
Outputable bdee => Outputable (GenStgArg bdee) # 

Methods

ppr :: GenStgArg bdee -> SDoc Source #

pprPrec :: Rational -> GenStgArg bdee -> SDoc Source #

Outputable instr => Outputable (ListGraph instr) # 

Methods

ppr :: ListGraph instr -> SDoc Source #

pprPrec :: Rational -> ListGraph instr -> SDoc Source #

Outputable instr => Outputable (GenBasicBlock instr) # 
Outputable instr => Outputable (LiveInstr instr) # 

Methods

ppr :: LiveInstr instr -> SDoc Source #

pprPrec :: Rational -> LiveInstr instr -> SDoc Source #

Outputable instr => Outputable (InstrSR instr) # 

Methods

ppr :: InstrSR instr -> SDoc Source #

pprPrec :: Rational -> InstrSR instr -> SDoc Source #

OutputableBndrId name => Outputable (Pat name) # 

Methods

ppr :: Pat name -> SDoc Source #

pprPrec :: Rational -> Pat name -> SDoc Source #

OutputableBndrId id => Outputable (SyntaxExpr id) # 
OutputableBndrId id => Outputable (HsSplice id) # 
OutputableBndrId id => Outputable (HsCmd id) # 

Methods

ppr :: HsCmd id -> SDoc Source #

pprPrec :: Rational -> HsCmd id -> SDoc Source #

OutputableBndrId id => Outputable (HsExpr id) # 

Methods

ppr :: HsExpr id -> SDoc Source #

pprPrec :: Rational -> HsExpr id -> SDoc Source #

Outputable (AmbiguousFieldOcc name) # 
Outputable (FieldOcc name) # 

Methods

ppr :: FieldOcc name -> SDoc Source #

pprPrec :: Rational -> FieldOcc name -> SDoc Source #

OutputableBndrId name => Outputable (ConDeclField name) # 
OutputableBndrId name => Outputable (HsAppType name) # 

Methods

ppr :: HsAppType name -> SDoc Source #

pprPrec :: Rational -> HsAppType name -> SDoc Source #

Outputable (HsWildCardInfo name) # 
OutputableBndrId name => Outputable (HsType name) # 

Methods

ppr :: HsType name -> SDoc Source #

pprPrec :: Rational -> HsType name -> SDoc Source #

OutputableBndrId name => Outputable (HsTyVarBndr name) # 
OutputableBndrId name => Outputable (LHsQTyVars name) # 

Methods

ppr :: LHsQTyVars name -> SDoc Source #

pprPrec :: Rational -> LHsQTyVars name -> SDoc Source #

OutputableBndrId id => Outputable (HsOverLit id) # 
Outputable a => Outputable (RecordPatSynField a) # 
OutputableBndr name => Outputable (FixitySig name) # 

Methods

ppr :: FixitySig name -> SDoc Source #

pprPrec :: Rational -> FixitySig name -> SDoc Source #

OutputableBndrId name => Outputable (Sig name) # 

Methods

ppr :: Sig name -> SDoc Source #

pprPrec :: Rational -> Sig name -> SDoc Source #

OutputableBndrId id => Outputable (IPBind id) # 

Methods

ppr :: IPBind id -> SDoc Source #

pprPrec :: Rational -> IPBind id -> SDoc Source #

OutputableBndrId id => Outputable (HsIPBinds id) # 
OutputableBndr id => Outputable (ABExport id) # 
Outputable a => Outputable (NonVoid a) # 
OutputableBndr name => Outputable (RoleAnnotDecl name) # 
OutputableBndrId name => Outputable (AnnDecl name) # 

Methods

ppr :: AnnDecl name -> SDoc Source #

pprPrec :: Rational -> AnnDecl name -> SDoc Source #

OutputableBndr name => Outputable (WarnDecl name) # 

Methods

ppr :: WarnDecl name -> SDoc Source #

pprPrec :: Rational -> WarnDecl name -> SDoc Source #

OutputableBndr name => Outputable (WarnDecls name) # 

Methods

ppr :: WarnDecls name -> SDoc Source #

pprPrec :: Rational -> WarnDecls name -> SDoc Source #

OutputableBndrId name => Outputable (VectDecl name) # 

Methods

ppr :: VectDecl name -> SDoc Source #

pprPrec :: Rational -> VectDecl name -> SDoc Source #

OutputableBndrId name => Outputable (RuleBndr name) # 

Methods

ppr :: RuleBndr name -> SDoc Source #

pprPrec :: Rational -> RuleBndr name -> SDoc Source #

OutputableBndrId name => Outputable (RuleDecl name) # 

Methods

ppr :: RuleDecl name -> SDoc Source #

pprPrec :: Rational -> RuleDecl name -> SDoc Source #

OutputableBndrId name => Outputable (RuleDecls name) # 

Methods

ppr :: RuleDecls name -> SDoc Source #

pprPrec :: Rational -> RuleDecls name -> SDoc Source #

OutputableBndrId name => Outputable (ForeignDecl name) # 
OutputableBndrId name => Outputable (DefaultDecl name) # 
OutputableBndrId name => Outputable (DerivDecl name) # 

Methods

ppr :: DerivDecl name -> SDoc Source #

pprPrec :: Rational -> DerivDecl name -> SDoc Source #

OutputableBndrId name => Outputable (InstDecl name) # 

Methods

ppr :: InstDecl name -> SDoc Source #

pprPrec :: Rational -> InstDecl name -> SDoc Source #

OutputableBndrId name => Outputable (ClsInstDecl name) # 
OutputableBndrId name => Outputable (DataFamInstDecl name) # 
OutputableBndrId name => Outputable (TyFamInstDecl name) # 
OutputableBndrId name => Outputable (ConDecl name) # 

Methods

ppr :: ConDecl name -> SDoc Source #

pprPrec :: Rational -> ConDecl name -> SDoc Source #

OutputableBndrId name => Outputable (HsDerivingClause name) # 
OutputableBndrId name => Outputable (HsDataDefn name) # 

Methods

ppr :: HsDataDefn name -> SDoc Source #

pprPrec :: Rational -> HsDataDefn name -> SDoc Source #

Outputable (FamilyInfo name) # 

Methods

ppr :: FamilyInfo name -> SDoc Source #

pprPrec :: Rational -> FamilyInfo name -> SDoc Source #

OutputableBndrId name => Outputable (FamilyDecl name) # 

Methods

ppr :: FamilyDecl name -> SDoc Source #

pprPrec :: Rational -> FamilyDecl name -> SDoc Source #

OutputableBndrId name => Outputable (TyClGroup name) # 

Methods

ppr :: TyClGroup name -> SDoc Source #

pprPrec :: Rational -> TyClGroup name -> SDoc Source #

OutputableBndrId name => Outputable (TyClDecl name) # 

Methods

ppr :: TyClDecl name -> SDoc Source #

pprPrec :: Rational -> TyClDecl name -> SDoc Source #

OutputableBndrId name => Outputable (SpliceDecl name) # 

Methods

ppr :: SpliceDecl name -> SDoc Source #

pprPrec :: Rational -> SpliceDecl name -> SDoc Source #

OutputableBndrId name => Outputable (HsGroup name) # 

Methods

ppr :: HsGroup name -> SDoc Source #

pprPrec :: Rational -> HsGroup name -> SDoc Source #

OutputableBndrId name => Outputable (HsDecl name) # 

Methods

ppr :: HsDecl name -> SDoc Source #

pprPrec :: Rational -> HsDecl name -> SDoc Source #

(Outputable id, Outputable (NameOrRdrName id)) => Outputable (HsStmtContext id) # 
OutputableBndr id => Outputable (HsMatchContext id) # 
OutputableBndrId id => Outputable (ArithSeqInfo id) # 
OutputableBndrId id => Outputable (HsBracket id) # 
OutputableBndrId id => Outputable (HsSplicedThing id) # 
OutputableBndrId id => Outputable (HsCmdTop id) # 
(OutputableBndrId name, HasOccName name) => Outputable (HsModule name) # 

Methods

ppr :: HsModule name -> SDoc Source #

pprPrec :: Rational -> HsModule name -> SDoc Source #

OutputableBndrId a => Outputable (InstInfo a) # 
Outputable (FunDepEqn a) # 
Outputable a => Outputable (StopOrContinue a) # 
Outputable theta => Outputable (DerivSpec theta) # 

Methods

ppr :: DerivSpec theta -> SDoc Source #

pprPrec :: Rational -> DerivSpec theta -> SDoc Source #

Outputable a => Outputable (ProtoBCO a) # 
(Outputable a, Outputable b) => Outputable (Either a b) # 

Methods

ppr :: Either a b -> SDoc Source #

pprPrec :: Rational -> Either a b -> SDoc Source #

(Outputable a, Outputable b) => Outputable (a, b) # 

Methods

ppr :: (a, b) -> SDoc Source #

pprPrec :: Rational -> (a, b) -> SDoc Source #

(Outputable key, Outputable elt) => Outputable (Map key elt) # 

Methods

ppr :: Map key elt -> SDoc Source #

pprPrec :: Rational -> Map key elt -> SDoc Source #

(Outputable l, Outputable e) => Outputable (GenLocated l e) # 
Outputable tv => Outputable (TyVarBndr tv ArgFlag) # 
Outputable tv => Outputable (TyVarBndr tv TyConBndrVis) # 
(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgRhs bndr bdee) # 

Methods

ppr :: GenStgRhs bndr bdee -> SDoc Source #

pprPrec :: Rational -> GenStgRhs bndr bdee -> SDoc Source #

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgExpr bndr bdee) # 

Methods

ppr :: GenStgExpr bndr bdee -> SDoc Source #

pprPrec :: Rational -> GenStgExpr bndr bdee -> SDoc Source #

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgBinding bndr bdee) # 

Methods

ppr :: GenStgBinding bndr bdee -> SDoc Source #

pprPrec :: Rational -> GenStgBinding bndr bdee -> SDoc Source #

(OutputableBndr bndr, Outputable bdee, Ord bdee) => Outputable (GenStgTopBinding bndr bdee) # 

Methods

ppr :: GenStgTopBinding bndr bdee -> SDoc Source #

pprPrec :: Rational -> GenStgTopBinding bndr bdee -> SDoc Source #

(Outputable arg, Outputable rec) => Outputable (HsConDetails arg rec) # 

Methods

ppr :: HsConDetails arg rec -> SDoc Source #

pprPrec :: Rational -> HsConDetails arg rec -> SDoc Source #

Outputable thing => Outputable (HsWildCardBndrs name thing) # 

Methods

ppr :: HsWildCardBndrs name thing -> SDoc Source #

pprPrec :: Rational -> HsWildCardBndrs name thing -> SDoc Source #

Outputable thing => Outputable (HsImplicitBndrs name thing) # 

Methods

ppr :: HsImplicitBndrs name thing -> SDoc Source #

pprPrec :: Rational -> HsImplicitBndrs name thing -> SDoc Source #

(OutputableBndr idL, OutputableBndrId idR) => Outputable (PatSynBind idL idR) # 

Methods

ppr :: PatSynBind idL idR -> SDoc Source #

pprPrec :: Rational -> PatSynBind idL idR -> SDoc Source #

(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsBindLR idL idR) # 

Methods

ppr :: HsBindLR idL idR -> SDoc Source #

pprPrec :: Rational -> HsBindLR idL idR -> SDoc Source #

(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsValBindsLR idL idR) # 

Methods

ppr :: HsValBindsLR idL idR -> SDoc Source #

pprPrec :: Rational -> HsValBindsLR idL idR -> SDoc Source #

(OutputableBndrId idL, OutputableBndrId idR) => Outputable (HsLocalBindsLR idL idR) # 

Methods

ppr :: HsLocalBindsLR idL idR -> SDoc Source #

pprPrec :: Rational -> HsLocalBindsLR idL idR -> SDoc Source #

(Outputable id, Outputable arg) => Outputable (HsRecField' id arg) # 

Methods

ppr :: HsRecField' id arg -> SDoc Source #

pprPrec :: Rational -> HsRecField' id arg -> SDoc Source #

Outputable arg => Outputable (HsRecFields id arg) # 

Methods

ppr :: HsRecFields id arg -> SDoc Source #

pprPrec :: Rational -> HsRecFields id arg -> SDoc Source #

OutputableBndrId idL => Outputable (ParStmtBlock idL idR) # 

Methods

ppr :: ParStmtBlock idL idR -> SDoc Source #

pprPrec :: Rational -> ParStmtBlock idL idR -> SDoc Source #

(OutputableBndrId idR, Outputable body) => Outputable (Match idR body) # 

Methods

ppr :: Match idR body -> SDoc Source #

pprPrec :: Rational -> Match idR body -> SDoc Source #

(Outputable statics, Outputable instr) => Outputable (RegAllocStats statics instr) # 

Methods

ppr :: RegAllocStats statics instr -> SDoc Source #

pprPrec :: Rational -> RegAllocStats statics instr -> SDoc Source #

(Outputable a, Outputable b, Outputable c) => Outputable (a, b, c) # 

Methods

ppr :: (a, b, c) -> SDoc Source #

pprPrec :: Rational -> (a, b, c) -> SDoc Source #

(OutputableBndrId idL, OutputableBndrId idR, Outputable body) => Outputable (StmtLR idL idR body) # 

Methods

ppr :: StmtLR idL idR body -> SDoc Source #

pprPrec :: Rational -> StmtLR idL idR body -> SDoc Source #

(Outputable a, Outputable b, Outputable c, Outputable d) => Outputable (a, b, c, d) # 

Methods

ppr :: (a, b, c, d) -> SDoc Source #

pprPrec :: Rational -> (a, b, c, d) -> SDoc Source #

(Outputable a, Outputable b, Outputable c, Outputable d, Outputable e) => Outputable (a, b, c, d, e) # 

Methods

ppr :: (a, b, c, d, e) -> SDoc Source #

pprPrec :: Rational -> (a, b, c, d, e) -> SDoc Source #

(Outputable a, Outputable b, Outputable c, Outputable d, Outputable e, Outputable f) => Outputable (a, b, c, d, e, f) # 

Methods

ppr :: (a, b, c, d, e, f) -> SDoc Source #

pprPrec :: Rational -> (a, b, c, d, e, f) -> SDoc Source #

(Outputable a, Outputable b, Outputable c, Outputable d, Outputable e, Outputable f, Outputable g) => Outputable (a, b, c, d, e, f, g) # 

Methods

ppr :: (a, b, c, d, e, f, g) -> SDoc Source #

pprPrec :: Rational -> (a, b, c, d, e, f, g) -> SDoc Source #

class Outputable a => OutputableBndr a where Source #

When we print a binder, we often want to print its type too. The OutputableBndr class encapsulates this idea.

Minimal complete definition

pprPrefixOcc, pprInfixOcc

Instances

OutputableBndr Name # 
OutputableBndr OccName # 
OutputableBndr RdrName # 
OutputableBndr PatSyn # 
OutputableBndr DataCon # 
OutputableBndr ConLike # 
OutputableBndr HsIPName # 
(OutputableBndr name, HasOccName name) => OutputableBndr (IEWrappedName name) # 
OutputableBndr (AmbiguousFieldOcc name) # 

Pretty printing combinators

data SDoc Source #

Represents a pretty-printable document.

To display an SDoc, use printSDoc, printSDocLn, bufLeftRenderSDoc, or renderWithStyle. Avoid calling runSDoc directly as it breaks the abstraction layer.

Instances

runSDoc :: SDoc -> SDocContext -> Doc Source #

interppSP :: Outputable a => [a] -> SDoc Source #

Returns the separated concatenation of the pretty printed things.

interpp'SP :: Outputable a => [a] -> SDoc Source #

Returns the comma-separated concatenation of the pretty printed things.

pprQuotedList :: Outputable a => [a] -> SDoc Source #

Returns the comma-separated concatenation of the quoted pretty printed things.

[x,y,z]  ==>  `x', `y', `z'

pprWithCommas Source #

Arguments

:: (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.

pprWithBars Source #

Arguments

:: (a -> SDoc)

The pretty printing function to use

-> [a]

The things to be pretty printed

-> SDoc

SDoc where the things have been pretty printed, bar-separated and finally packed into a paragraph.

nest :: Int -> SDoc -> SDoc Source #

Indent SDoc some specified amount

doublePrec :: Int -> Double -> SDoc Source #

doublePrec p n shows a floating point number n with p digits of precision after the decimal point.

(<>) :: SDoc -> SDoc -> SDoc Source #

Join two SDoc together horizontally without a gap

(<+>) :: SDoc -> SDoc -> SDoc Source #

Join two SDoc together horizontally with a gap between them

hcat :: [SDoc] -> SDoc Source #

Concatenate SDoc horizontally

hsep :: [SDoc] -> SDoc Source #

Concatenate SDoc horizontally with a space between each one

($$) :: SDoc -> SDoc -> SDoc Source #

Join two SDoc together vertically; if there is no vertical overlap it "dovetails" the two onto one line

($+$) :: SDoc -> SDoc -> SDoc Source #

Join two SDoc together vertically

vcat :: [SDoc] -> SDoc Source #

Concatenate SDoc vertically with dovetailing

sep :: [SDoc] -> SDoc Source #

Separate: is either like hsep or like vcat, depending on what fits

cat :: [SDoc] -> SDoc Source #

Catenate: is either like hcat or like vcat, depending on what fits

fsep :: [SDoc] -> SDoc Source #

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 Source #

This behaves like fsep, but it uses <> for horizontal conposition rather than <+>

hang Source #

Arguments

:: SDoc

The header

-> Int

Amount to indent the hung body

-> SDoc

The hung body, indented and placed below the header

-> SDoc 

hangNotEmpty :: SDoc -> Int -> SDoc -> SDoc Source #

This behaves like hang, but does not indent the second document when the header is empty.

punctuate Source #

Arguments

:: SDoc

The punctuation

-> [SDoc]

The list that will have punctuation added between every adjacent pair of elements

-> [SDoc]

Punctuated list

speakNth :: Int -> SDoc Source #

Converts an integer to a verbal index:

speakNth 1 = text "first"
speakNth 5 = text "fifth"
speakNth 21 = text "21st"

speakN :: Int -> SDoc Source #

Converts an integer to a verbal multiplicity:

speakN 0 = text "none"
speakN 5 = text "five"
speakN 10 = text "10"

speakNOf :: Int -> SDoc -> SDoc Source #

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 Source #

Determines the pluralisation suffix appropriate for the length of a list:

plural [] = char 's'
plural ["Hello"] = empty
plural ["Hello", "World"] = char 's'

isOrAre :: [a] -> SDoc Source #

Determines the form of to be appropriate for the length of a list:

isOrAre [] = text "are"
isOrAre ["Hello"] = text "is"
isOrAre ["Hello", "World"] = text "are"

doOrDoes :: [a] -> SDoc Source #

Determines the form of to do appropriate for the length of a list:

doOrDoes [] = text "do"
doOrDoes ["Hello"] = text "does"
doOrDoes ["Hello", "World"] = text "do"

coloured :: PprColour -> SDoc -> SDoc Source #

Apply the given colour/style for the argument.

Only takes effect if colours are enabled.

Converting SDoc into strings and outputing it

printSDoc :: Mode -> DynFlags -> Handle -> PprStyle -> SDoc -> IO () Source #

The analog of printDoc_ for SDoc, which tries to make sure the terminal doesn't get screwed up by the ANSI color codes if an exception is thrown during pretty-printing.

printSDocLn :: Mode -> DynFlags -> Handle -> PprStyle -> SDoc -> IO () Source #

Like printSDoc but appends an extra newline.

printForC :: DynFlags -> Handle -> SDoc -> IO () Source #

Like printSDocLn but specialized with LeftMode and PprCode CStyle. This is typically used to output C-- code.

bufLeftRenderSDoc :: DynFlags -> BufHandle -> PprStyle -> SDoc -> IO () Source #

An efficient variant of printSDoc specialized for LeftMode that outputs to a BufHandle.

pprHsChar :: Char -> SDoc Source #

Special combinator for showing character literals.

pprHsString :: FastString -> SDoc Source #

Special combinator for showing string literals.

pprHsBytes :: ByteString -> SDoc Source #

Special combinator for showing bytestring literals.

pprPrimChar :: Char -> SDoc Source #

Special combinator for showing unboxed literals.

Controlling the style in which output is printed

data BindingSite Source #

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. Also see Note [Binding-site specific printing] in PprCore

Constructors

LambdaBind

The x in (x. e)

CaseBind

The x in case scrut of x { (y,z) -> ... }

CasePatBind

The y,z in case scrut of x { (y,z) -> ... }

LetBind

The x in (let x = rhs in e)

data CodeStyle Source #

Constructors

CStyle 
AsmStyle 

data PrintUnqualified Source #

When printing code that contains original names, we need to map the original names back to something the user understands. This is the purpose of the triple of functions that gets passed around when rendering SDoc.

type QueryQualifyName = Module -> OccName -> QualifyName Source #

given an original name, this function tells you which module name it should be qualified with when printing for the user, if any. For example, given Control.Exception.catch, which is in scope as Exception.catch, this function will return Just Exception. Note that the return value is a ModuleName, not a Module, because in source code, names are qualified by ModuleNames.

type QueryQualifyModule = Module -> Bool Source #

For a given module, we need to know whether to print it with a package name to disambiguate it.

type QueryQualifyPackage = UnitId -> Bool Source #

For a given package, we need to know whether to print it with the component id to disambiguate it.

alwaysQualifyNames :: QueryQualifyName Source #

NB: This won't ever show package IDs

withPprStyleDoc :: DynFlags -> PprStyle -> SDoc -> Doc Source #

This is not a recommended way to render SDoc, since it breaks the abstraction layer of SDoc. Prefer to use printSDoc, printSDocLn, bufLeftRenderSDoc, or renderWithStyle instead.

pprDeeperList :: ([SDoc] -> SDoc) -> [SDoc] -> SDoc Source #

Truncate a list that is longer than the current depth.

mkErrStyle :: DynFlags -> PrintUnqualified -> PprStyle Source #

Style for printing error messages

data Depth Source #

Constructors

AllTheWay 
PartWay Int 

Error handling and debugging utilities

pprPanic :: HasCallStack => String -> SDoc -> a Source #

Throw an exception saying "bug in GHC"

pprSorry :: String -> SDoc -> a Source #

Throw an exception saying "this isn't finished yet"

assertPprPanic :: HasCallStack => String -> Int -> SDoc -> a Source #

Panic with an assertation failure, recording the given file and line number. Should typically be accessed with the ASSERT family of macros

pprPgmError :: String -> SDoc -> a Source #

Throw an exception saying "bug in pgm being compiled" (used for unusual program errors)

pprTrace :: String -> SDoc -> a -> a Source #

If debug output is on, show some SDoc on the screen

pprTraceDebug :: String -> SDoc -> a -> a Source #

pprTraceIt :: Outputable a => String -> a -> a Source #

pprTraceIt desc x is equivalent to pprTrace desc (ppr x) x

warnPprTrace :: Bool -> String -> Int -> SDoc -> a -> a Source #

Just warn about an assertion failure, recording the given file and line number. Should typically be accessed with the WARN macros

pprSTrace :: HasCallStack => SDoc -> a -> a Source #

If debug output is on, show some SDoc on the screen along with a call stack when available.

trace :: String -> a -> a Source #

The trace function outputs the trace message given as its first argument, before returning the second argument as its result.

For example, this returns the value of f x but first outputs the message.

trace ("calling f with x = " ++ show x) (f x)

The trace function should only be used for debugging, or for monitoring execution. The function is not referentially transparent: its type indicates that it is a pure function but it has the side effect of outputting the trace message.

pgmError :: String -> a Source #

Panics and asserts.

panic :: String -> a Source #

Panics and asserts.

sorry :: String -> a Source #

Panics and asserts.

assertPanic :: String -> Int -> a Source #

Throw an failed assertion exception for a given filename and line number.

pprDebugAndThen :: DynFlags -> (String -> a) -> SDoc -> SDoc -> a Source #