ghc-8.2.2: 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 #

Class designating that some type has an SDoc representation

Methods

ppr :: a -> SDoc #

pprPrec :: Rational -> a -> SDoc #

Instances

Outputable Bool # 

Methods

ppr :: Bool -> SDoc #

pprPrec :: Rational -> Bool -> SDoc #

Outputable Char # 

Methods

ppr :: Char -> SDoc #

pprPrec :: Rational -> Char -> SDoc #

Outputable Int # 

Methods

ppr :: Int -> SDoc #

pprPrec :: Rational -> Int -> SDoc #

Outputable Int32 # 

Methods

ppr :: Int32 -> SDoc #

pprPrec :: Rational -> Int32 -> SDoc #

Outputable Int64 # 

Methods

ppr :: Int64 -> SDoc #

pprPrec :: Rational -> Int64 -> SDoc #

Outputable Ordering # 
Outputable Word # 

Methods

ppr :: Word -> SDoc #

pprPrec :: Rational -> Word -> SDoc #

Outputable Word16 # 

Methods

ppr :: Word16 -> SDoc #

pprPrec :: Rational -> Word16 -> SDoc #

Outputable Word32 # 

Methods

ppr :: Word32 -> SDoc #

pprPrec :: Rational -> Word32 -> SDoc #

Outputable () # 

Methods

ppr :: () -> SDoc #

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

Outputable Fingerprint # 
Outputable Extension # 
Outputable Serialized # 
Outputable Name # 

Methods

ppr :: Name -> SDoc #

pprPrec :: Rational -> Name -> SDoc #

Outputable OccName # 

Methods

ppr :: OccName -> SDoc #

pprPrec :: Rational -> OccName -> SDoc #

Outputable PrimOp # 

Methods

ppr :: PrimOp -> SDoc #

pprPrec :: Rational -> PrimOp -> SDoc #

Outputable TyCon # 

Methods

ppr :: TyCon -> SDoc #

pprPrec :: Rational -> TyCon -> SDoc #

Outputable FastString # 
Outputable ComponentId # 
Outputable InstalledUnitId # 
Outputable UnitId # 

Methods

ppr :: UnitId -> SDoc #

pprPrec :: Rational -> UnitId -> SDoc #

Outputable ModuleName # 
Outputable Module # 

Methods

ppr :: Module -> SDoc #

pprPrec :: Rational -> Module -> SDoc #

Outputable QualifyName # 
Outputable PprStyle # 
Outputable TyBinder # 
Outputable TCvSubst # 
Outputable UnivCoProvenance # 
Outputable Coercion # 
Outputable TyThing # 

Methods

ppr :: TyThing -> SDoc #

pprPrec :: Rational -> TyThing -> SDoc #

Outputable Type # 

Methods

ppr :: Type -> SDoc #

pprPrec :: Rational -> Type -> SDoc #

Outputable MetaDetails # 
Outputable SrcSpan # 

Methods

ppr :: SrcSpan -> SDoc #

pprPrec :: Rational -> SrcSpan -> SDoc #

Outputable RealSrcSpan # 
Outputable SrcLoc # 

Methods

ppr :: SrcLoc -> SDoc #

pprPrec :: Rational -> SrcLoc -> SDoc #

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 # 

Methods

ppr :: OccInfo -> SDoc #

pprPrec :: Rational -> OccInfo -> SDoc #

Outputable OverlapMode # 
Outputable OverlapFlag # 
Outputable DerivStrategy # 
Outputable Origin # 

Methods

ppr :: Origin -> SDoc #

pprPrec :: Rational -> Origin -> SDoc #

Outputable RecFlag # 

Methods

ppr :: RecFlag -> SDoc #

pprPrec :: Rational -> RecFlag -> SDoc #

Outputable Boxity # 

Methods

ppr :: Boxity -> SDoc #

pprPrec :: Rational -> Boxity -> SDoc #

Outputable TopLevelFlag # 
Outputable LexicalFixity # 
Outputable FixityDirection # 
Outputable Fixity # 

Methods

ppr :: Fixity -> SDoc #

pprPrec :: Rational -> Fixity -> SDoc #

Outputable WarningTxt # 
Outputable StringLiteral # 
Outputable FunctionOrData # 
Outputable SwapFlag # 
Outputable OneShotInfo # 
Outputable LeftOrRight # 
Outputable Unique # 

Methods

ppr :: Unique -> SDoc #

pprPrec :: Rational -> Unique -> SDoc #

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 #

pprPrec :: Rational -> Reg -> SDoc #

Outputable RealReg # 

Methods

ppr :: RealReg -> SDoc #

pprPrec :: Rational -> RealReg -> SDoc #

Outputable VirtualReg # 
Outputable DefUnitId # 
Outputable InstalledModule # 
Outputable IndefModule # 
Outputable IndefUnitId # 
Outputable ModLocation # 
Outputable PackageName # 
Outputable SourcePackageId # 
Outputable CType # 

Methods

ppr :: CType -> SDoc #

pprPrec :: Rational -> CType -> SDoc #

Outputable Header # 

Methods

ppr :: Header -> SDoc #

pprPrec :: Rational -> Header -> SDoc #

Outputable CCallConv # 
Outputable CCallSpec # 
Outputable CExportSpec # 
Outputable Safety # 

Methods

ppr :: Safety -> SDoc #

pprPrec :: Rational -> Safety -> SDoc #

Outputable ForeignCall # 
Outputable Phase # 

Methods

ppr :: Phase -> SDoc #

pprPrec :: Rational -> Phase -> SDoc #

Outputable PackageFlag # 
Outputable ModRenaming # 
Outputable PackageArg # 
Outputable GhcMode # 

Methods

ppr :: GhcMode -> SDoc #

pprPrec :: Rational -> GhcMode -> SDoc #

Outputable SafeHaskellMode # 
Outputable Language # 
Outputable WarnReason # 
Outputable ArgDescr # 
Outputable ClosureTypeInfo # 
Outputable SMRep # 

Methods

ppr :: SMRep -> SDoc #

pprPrec :: Rational -> SMRep -> SDoc #

Outputable StgHalfWord # 
Outputable StgWord # 

Methods

ppr :: StgWord -> SDoc #

pprPrec :: Rational -> StgWord -> SDoc #

Outputable Annotation # 
Outputable ModuleOrigin # 
Outputable Width # 

Methods

ppr :: Width -> SDoc #

pprPrec :: Rational -> Width -> SDoc #

Outputable CmmType # 

Methods

ppr :: CmmType -> SDoc #

pprPrec :: Rational -> CmmType -> SDoc #

Outputable AvailInfo # 
Outputable ImportSpec # 
Outputable Parent # 

Methods

ppr :: Parent -> SDoc #

pprPrec :: Rational -> Parent -> SDoc #

Outputable GlobalRdrElt # 
Outputable LocalRdrEnv # 
Outputable RdrName # 

Methods

ppr :: RdrName -> SDoc #

pprPrec :: Rational -> RdrName -> SDoc #

Outputable AnnotationComment # 
Outputable AnnKeywordId # 
Outputable Token # 

Methods

ppr :: Token -> SDoc #

pprPrec :: Rational -> Token -> SDoc #

Outputable ArgFlag # 

Methods

ppr :: ArgFlag -> SDoc #

pprPrec :: Rational -> ArgFlag -> SDoc #

Outputable Var # 

Methods

ppr :: Var -> SDoc #

pprPrec :: Rational -> Var -> SDoc #

Outputable PatSyn # 

Methods

ppr :: PatSyn -> SDoc #

pprPrec :: Rational -> PatSyn -> SDoc #

Outputable EqSpec # 

Methods

ppr :: EqSpec -> SDoc #

pprPrec :: Rational -> EqSpec -> SDoc #

Outputable DataCon # 

Methods

ppr :: DataCon -> SDoc #

pprPrec :: Rational -> DataCon -> SDoc #

Outputable ConLike # 

Methods

ppr :: ConLike -> SDoc #

pprPrec :: Rational -> ConLike -> SDoc #

Outputable CostCentreStack # 
Outputable CostCentre # 
Outputable CoAxiomRule # 
Outputable Role # 

Methods

ppr :: Role -> SDoc #

pprPrec :: Rational -> Role -> SDoc #

Outputable CoAxBranch # 
Outputable LiftingContext # 
Outputable Class # 

Methods

ppr :: Class -> SDoc #

pprPrec :: Rational -> Class -> SDoc #

Outputable PrimElemRep # 
Outputable PrimRep # 

Methods

ppr :: PrimRep -> SDoc #

pprPrec :: Rational -> PrimRep -> SDoc #

Outputable FamTyConFlav # 
Outputable AlgTyConFlav # 
Outputable IfaceTcArgs # 
Outputable IfaceCoercion # 
Outputable IfaceTyLit # 
Outputable IfaceTyCon # 
Outputable IfaceType # 
Outputable IfaceBndr # 
Outputable InScopeSet # 
Outputable CoercionHole # 
Outputable EqRel # 

Methods

ppr :: EqRel -> SDoc #

pprPrec :: Rational -> EqRel -> SDoc #

Outputable Literal # 

Methods

ppr :: Literal -> SDoc #

pprPrec :: Rational -> Literal -> SDoc #

Outputable StrictnessMark # 
Outputable SrcUnpackedness # 
Outputable SrcStrictness # 
Outputable HsImplBang # 
Outputable HsSrcBang # 
Outputable SlotTy # 

Methods

ppr :: SlotTy -> SDoc #

pprPrec :: Rational -> SlotTy -> SDoc #

Outputable StrictSig # 
Outputable DmdType # 

Methods

ppr :: DmdType -> SDoc #

pprPrec :: Rational -> DmdType -> SDoc #

Outputable CPRResult # 
Outputable TypeShape # 
Outputable Count # 

Methods

ppr :: Count -> SDoc #

pprPrec :: Rational -> Count -> SDoc #

Outputable UseDmd # 

Methods

ppr :: UseDmd -> SDoc #

pprPrec :: Rational -> UseDmd -> SDoc #

Outputable StrDmd # 

Methods

ppr :: StrDmd -> SDoc #

pprPrec :: Rational -> StrDmd -> SDoc #

Outputable AltCon # 

Methods

ppr :: AltCon -> SDoc #

pprPrec :: Rational -> AltCon -> SDoc #

Outputable FamInstMatch # 
Outputable FamInst # 

Methods

ppr :: FamInst -> SDoc #

pprPrec :: Rational -> FamInst -> SDoc #

Outputable LevityInfo # 
Outputable TickBoxOp # 
Outputable CafInfo # 

Methods

ppr :: CafInfo -> SDoc #

pprPrec :: Rational -> CafInfo -> SDoc #

Outputable RecSelParent # 
Outputable UnVarGraph # 
Outputable UnVarSet # 
Outputable PrimCall # 
Outputable CgBreakInfo # 
Outputable UnlinkedBCO # 
Outputable CompiledByteCode # 
Outputable CoreStats # 
Outputable UpdateFlag # 
Outputable AltType # 

Methods

ppr :: AltType -> SDoc #

pprPrec :: Rational -> AltType -> SDoc #

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 # 

Methods

ppr :: IfaceAT -> SDoc #

pprPrec :: Rational -> IfaceAT -> SDoc #

Outputable IfaceClassOp # 
Outputable IfaceTyConParent # 
Outputable IfaceDecl # 
Outputable ForeignLabelSource # 
Outputable CLabel # 

Methods

ppr :: CLabel -> SDoc #

pprPrec :: Rational -> CLabel -> SDoc #

Outputable CmmTickScope # 
Outputable LlvmCastOp # 
Outputable LlvmCmpOp # 
Outputable LlvmMachOp # 
Outputable LlvmLinkageType # 
Outputable LlvmCallConvention # 
Outputable LlvmFuncAttr # 
Outputable LlvmParamAttr # 
Outputable LlvmFunctionDecl # 
Outputable LlvmStatic # 
Outputable LlvmLit # 

Methods

ppr :: LlvmLit -> SDoc #

pprPrec :: Rational -> LlvmLit -> SDoc #

Outputable LlvmVar # 

Methods

ppr :: LlvmVar -> SDoc #

pprPrec :: Rational -> LlvmVar -> SDoc #

Outputable LlvmType # 
Outputable MetaExpr # 
Outputable MetaId # 

Methods

ppr :: MetaId -> SDoc #

pprPrec :: Rational -> MetaId -> SDoc #

Outputable LiveInfo # 
Outputable Loc # 

Methods

ppr :: Loc -> SDoc #

pprPrec :: Rational -> Loc -> SDoc #

Outputable SpillStats # 
Outputable UnwindExpr # 
Outputable UnwindPoint # 
Outputable DebugBlock # 
Outputable Status # 

Methods

ppr :: Status -> SDoc #

pprPrec :: Rational -> Status -> SDoc #

Outputable ParamLocation # 
Outputable TopSRT # 

Methods

ppr :: TopSRT -> SDoc #

pprPrec :: Rational -> TopSRT -> SDoc #

Outputable CandidatesQTvs # 
Outputable TcLevel # 

Methods

ppr :: TcLevel -> SDoc #

pprPrec :: Rational -> TcLevel -> SDoc #

Outputable InferResult # 
Outputable ExpType # 

Methods

ppr :: ExpType -> SDoc #

pprPrec :: Rational -> ExpType -> SDoc #

Outputable EvCallStack # 
Outputable EvLit # 

Methods

ppr :: EvLit -> SDoc #

pprPrec :: Rational -> EvLit -> SDoc #

Outputable EvTypeable # 
Outputable EvTerm # 

Methods

ppr :: EvTerm -> SDoc #

pprPrec :: Rational -> EvTerm -> SDoc #

Outputable EvBind # 

Methods

ppr :: EvBind -> SDoc #

pprPrec :: Rational -> EvBind -> SDoc #

Outputable EvBindMap # 
Outputable EvBindsVar # 
Outputable TcEvBinds # 
Outputable HsWrapper # 
Outputable HsTyLit # 

Methods

ppr :: HsTyLit -> SDoc #

pprPrec :: Rational -> HsTyLit -> SDoc #

Outputable HsIPName # 
Outputable OverLitVal # 
Outputable HsLit # 

Methods

ppr :: HsLit -> SDoc #

pprPrec :: Rational -> HsLit -> SDoc #

Outputable TcSpecPrag # 
Outputable CgLoc # 

Methods

ppr :: CgLoc -> SDoc #

pprPrec :: Rational -> CgLoc -> SDoc #

Outputable Sequel # 

Methods

ppr :: Sequel -> SDoc #

pprPrec :: Rational -> Sequel -> SDoc #

Outputable CgIdInfo # 
Outputable ArgRep # 

Methods

ppr :: ArgRep -> SDoc #

pprPrec :: Rational -> ArgRep -> SDoc #

Outputable ClsInst # 

Methods

ppr :: ClsInst -> SDoc #

pprPrec :: Rational -> ClsInst -> SDoc #

Outputable DocDecl # 

Methods

ppr :: DocDecl -> SDoc #

pprPrec :: Rational -> DocDecl -> SDoc #

Outputable ForeignExport # 
Outputable ForeignImport # 
Outputable NewOrData # 
Outputable PendingTcSplice # 
Outputable PendingRnSplice # 
Outputable SpliceDecoration # 
Outputable UnboundVar # 
Outputable PmLit # 

Methods

ppr :: PmLit -> SDoc #

pprPrec :: Rational -> PmLit -> SDoc #

Outputable PmExpr # 

Methods

ppr :: PmExpr -> SDoc #

pprPrec :: Rational -> PmExpr -> SDoc #

Outputable CompleteMatch # 
Outputable Unlinked # 
Outputable Linkable # 
Outputable IfaceTrustInfo # 
Outputable IfaceVectInfo # 
Outputable VectInfo # 
Outputable ModSummary # 
Outputable FixItem # 

Methods

ppr :: FixItem -> SDoc #

pprPrec :: Rational -> FixItem -> SDoc #

Outputable InteractiveImport # 
Outputable SptEntry # 
Outputable TargetId # 
Outputable Target # 

Methods

ppr :: Target -> SDoc #

pprPrec :: Rational -> Target -> SDoc #

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 #

pprPrec :: Rational -> Ct -> SDoc #

Outputable TcPatSynInfo # 
Outputable TcIdSigInst # 
Outputable TcIdSigInfo # 
Outputable TcSigInfo # 
Outputable WhereFrom # 
Outputable IdBindingInfo # 
Outputable PromotionErr # 
Outputable TcTyThing # 
Outputable ThStage # 

Methods

ppr :: ThStage -> SDoc #

pprPrec :: Rational -> ThStage -> SDoc #

Outputable TcIdBinder # 
Outputable PhasePlus # 
Outputable HsComponentId # 
Outputable FloatBind # 
Outputable Subst # 

Methods

ppr :: Subst -> SDoc #

pprPrec :: Rational -> Subst -> SDoc #

Outputable CallCtxt # 
Outputable ArgSummary # 
Outputable Tick # 

Methods

ppr :: Tick -> SDoc #

pprPrec :: Rational -> Tick -> SDoc #

Outputable FloatOutSwitches # 
Outputable SimplifierMode # 
Outputable CoreToDo # 
Outputable Floats # 

Methods

ppr :: Floats -> SDoc #

pprPrec :: Rational -> Floats -> SDoc #

Outputable SimplSR # 

Methods

ppr :: SimplSR -> SDoc #

pprPrec :: Rational -> SimplSR -> SDoc #

Outputable ArgSpec # 

Methods

ppr :: ArgSpec -> SDoc #

pprPrec :: Rational -> ArgSpec -> SDoc #

Outputable DupFlag # 

Methods

ppr :: DupFlag -> SDoc #

pprPrec :: Rational -> DupFlag -> SDoc #

Outputable SimplCont # 
Outputable FloatSpec # 
Outputable Level # 

Methods

ppr :: Level -> SDoc #

pprPrec :: Rational -> Level -> SDoc #

Outputable HsSigCtxt # 
Outputable ClosureType # 
Outputable Term # 

Methods

ppr :: Term -> SDoc #

pprPrec :: Rational -> Term -> SDoc #

Outputable InertCans # 
Outputable InertSet # 
Outputable WorkList # 
Outputable FlattenMode # 
Outputable InferMode # 
Outputable ThetaOrigin # 
Outputable PredOrigin # 
Outputable DerivSpecMechanism # 
Outputable BCInstr # 

Methods

ppr :: BCInstr -> SDoc #

pprPrec :: Rational -> BCInstr -> SDoc #

Outputable LetBndrSpec # 
Outputable EquationInfo # 
Outputable DsMatchContext # 
Outputable CompRepr # 
Outputable ProdRepr # 
Outputable ConRepr # 

Methods

ppr :: ConRepr -> SDoc #

pprPrec :: Rational -> ConRepr -> SDoc #

Outputable SumRepr # 

Methods

ppr :: SumRepr -> SDoc #

pprPrec :: Rational -> SumRepr -> SDoc #

Outputable DwarfFrameBlock # 
Outputable CoreModule # 
Outputable a => Outputable [a] # 

Methods

ppr :: [a] -> SDoc #

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

Outputable a => Outputable (Maybe a) # 

Methods

ppr :: Maybe a -> SDoc #

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

Outputable elt => Outputable (IntMap elt) # 

Methods

ppr :: IntMap elt -> SDoc #

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

Outputable a => Outputable (SCC a) # 

Methods

ppr :: SCC a -> SDoc #

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

Outputable a => Outputable (Set a) # 

Methods

ppr :: Set a -> SDoc #

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

Outputable a => Outputable (Pair a) # 

Methods

ppr :: Pair a -> SDoc #

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

Outputable a => Outputable (OrdList a) # 

Methods

ppr :: OrdList a -> SDoc #

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

Outputable (DefMethSpec ty) # 

Methods

ppr :: DefMethSpec ty -> SDoc #

pprPrec :: Rational -> DefMethSpec ty -> SDoc #

Outputable a => Outputable (UniqFM a) # 

Methods

ppr :: UniqFM a -> SDoc #

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

Outputable a => Outputable (UniqSet a) # 

Methods

ppr :: UniqSet a -> SDoc #

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

Outputable a => Outputable (UniqDFM a) # 

Methods

ppr :: UniqDFM a -> SDoc #

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

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

Methods

ppr :: Graph node -> SDoc #

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

Outputable a => Outputable (Bag a) # 

Methods

ppr :: Bag a -> SDoc #

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

Outputable a => Outputable (OccEnv a) # 

Methods

ppr :: OccEnv a -> SDoc #

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

Outputable a => Outputable (FieldLbl a) # 

Methods

ppr :: FieldLbl a -> SDoc #

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

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

Methods

ppr :: IE name -> SDoc #

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

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

Methods

ppr :: IEWrappedName name -> SDoc #

pprPrec :: Rational -> IEWrappedName name -> SDoc #

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

Methods

ppr :: ImportDecl name -> SDoc #

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

Outputable name => Outputable (AnnTarget name) # 

Methods

ppr :: AnnTarget name -> SDoc #

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

Outputable (CoAxiom br) # 

Methods

ppr :: CoAxiom br -> SDoc #

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

Outputable a => Outputable (UnifyResultM a) # 
Outputable b => Outputable (TaggedBndr b) # 

Methods

ppr :: TaggedBndr b -> SDoc #

pprPrec :: Rational -> TaggedBndr b -> SDoc #

Outputable a => Outputable (CoreMap a) # 

Methods

ppr :: CoreMap a -> SDoc #

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

Outputable bdee => Outputable (GenStgArg bdee) # 

Methods

ppr :: GenStgArg bdee -> SDoc #

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

Outputable instr => Outputable (ListGraph instr) # 

Methods

ppr :: ListGraph instr -> SDoc #

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

Outputable instr => Outputable (GenBasicBlock instr) # 

Methods

ppr :: GenBasicBlock instr -> SDoc #

pprPrec :: Rational -> GenBasicBlock instr -> SDoc #

Outputable instr => Outputable (LiveInstr instr) # 

Methods

ppr :: LiveInstr instr -> SDoc #

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

Outputable instr => Outputable (InstrSR instr) # 

Methods

ppr :: InstrSR instr -> SDoc #

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

OutputableBndrId name => Outputable (Pat name) # 

Methods

ppr :: Pat name -> SDoc #

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

OutputableBndrId id => Outputable (SyntaxExpr id) # 

Methods

ppr :: SyntaxExpr id -> SDoc #

pprPrec :: Rational -> SyntaxExpr id -> SDoc #

OutputableBndrId id => Outputable (HsSplice id) # 

Methods

ppr :: HsSplice id -> SDoc #

pprPrec :: Rational -> HsSplice id -> SDoc #

OutputableBndrId id => Outputable (HsCmd id) # 

Methods

ppr :: HsCmd id -> SDoc #

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

OutputableBndrId id => Outputable (HsExpr id) # 

Methods

ppr :: HsExpr id -> SDoc #

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

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

Methods

ppr :: FieldOcc name -> SDoc #

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

OutputableBndrId name => Outputable (ConDeclField name) # 

Methods

ppr :: ConDeclField name -> SDoc #

pprPrec :: Rational -> ConDeclField name -> SDoc #

OutputableBndrId name => Outputable (HsAppType name) # 

Methods

ppr :: HsAppType name -> SDoc #

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

Outputable (HsWildCardInfo name) # 

Methods

ppr :: HsWildCardInfo name -> SDoc #

pprPrec :: Rational -> HsWildCardInfo name -> SDoc #

OutputableBndrId name => Outputable (HsType name) # 

Methods

ppr :: HsType name -> SDoc #

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

OutputableBndrId name => Outputable (HsTyVarBndr name) # 

Methods

ppr :: HsTyVarBndr name -> SDoc #

pprPrec :: Rational -> HsTyVarBndr name -> SDoc #

OutputableBndrId name => Outputable (LHsQTyVars name) # 

Methods

ppr :: LHsQTyVars name -> SDoc #

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

OutputableBndrId id => Outputable (HsOverLit id) # 

Methods

ppr :: HsOverLit id -> SDoc #

pprPrec :: Rational -> HsOverLit id -> SDoc #

Outputable a => Outputable (RecordPatSynField a) # 
OutputableBndr name => Outputable (FixitySig name) # 

Methods

ppr :: FixitySig name -> SDoc #

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

OutputableBndrId name => Outputable (Sig name) # 

Methods

ppr :: Sig name -> SDoc #

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

OutputableBndrId id => Outputable (IPBind id) # 

Methods

ppr :: IPBind id -> SDoc #

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

OutputableBndrId id => Outputable (HsIPBinds id) # 

Methods

ppr :: HsIPBinds id -> SDoc #

pprPrec :: Rational -> HsIPBinds id -> SDoc #

OutputableBndr id => Outputable (ABExport id) # 

Methods

ppr :: ABExport id -> SDoc #

pprPrec :: Rational -> ABExport id -> SDoc #

Outputable a => Outputable (NonVoid a) # 

Methods

ppr :: NonVoid a -> SDoc #

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

OutputableBndr name => Outputable (RoleAnnotDecl name) # 

Methods

ppr :: RoleAnnotDecl name -> SDoc #

pprPrec :: Rational -> RoleAnnotDecl name -> SDoc #

OutputableBndrId name => Outputable (AnnDecl name) # 

Methods

ppr :: AnnDecl name -> SDoc #

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

OutputableBndr name => Outputable (WarnDecl name) # 

Methods

ppr :: WarnDecl name -> SDoc #

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

OutputableBndr name => Outputable (WarnDecls name) # 

Methods

ppr :: WarnDecls name -> SDoc #

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

OutputableBndrId name => Outputable (VectDecl name) # 

Methods

ppr :: VectDecl name -> SDoc #

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

OutputableBndrId name => Outputable (RuleBndr name) # 

Methods

ppr :: RuleBndr name -> SDoc #

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

OutputableBndrId name => Outputable (RuleDecl name) # 

Methods

ppr :: RuleDecl name -> SDoc #

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

OutputableBndrId name => Outputable (RuleDecls name) # 

Methods

ppr :: RuleDecls name -> SDoc #

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

OutputableBndrId name => Outputable (ForeignDecl name) # 

Methods

ppr :: ForeignDecl name -> SDoc #

pprPrec :: Rational -> ForeignDecl name -> SDoc #

OutputableBndrId name => Outputable (DefaultDecl name) # 

Methods

ppr :: DefaultDecl name -> SDoc #

pprPrec :: Rational -> DefaultDecl name -> SDoc #

OutputableBndrId name => Outputable (DerivDecl name) # 

Methods

ppr :: DerivDecl name -> SDoc #

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

OutputableBndrId name => Outputable (InstDecl name) # 

Methods

ppr :: InstDecl name -> SDoc #

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

OutputableBndrId name => Outputable (ClsInstDecl name) # 

Methods

ppr :: ClsInstDecl name -> SDoc #

pprPrec :: Rational -> ClsInstDecl name -> SDoc #

OutputableBndrId name => Outputable (DataFamInstDecl name) # 

Methods

ppr :: DataFamInstDecl name -> SDoc #

pprPrec :: Rational -> DataFamInstDecl name -> SDoc #

OutputableBndrId name => Outputable (TyFamInstDecl name) # 

Methods

ppr :: TyFamInstDecl name -> SDoc #

pprPrec :: Rational -> TyFamInstDecl name -> SDoc #

OutputableBndrId name => Outputable (ConDecl name) # 

Methods

ppr :: ConDecl name -> SDoc #

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

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

Methods

ppr :: HsDataDefn name -> SDoc #

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

Outputable (FamilyInfo name) # 

Methods

ppr :: FamilyInfo name -> SDoc #

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

OutputableBndrId name => Outputable (FamilyDecl name) # 

Methods

ppr :: FamilyDecl name -> SDoc #

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

OutputableBndrId name => Outputable (TyClGroup name) # 

Methods

ppr :: TyClGroup name -> SDoc #

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

OutputableBndrId name => Outputable (TyClDecl name) # 

Methods

ppr :: TyClDecl name -> SDoc #

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

OutputableBndrId name => Outputable (SpliceDecl name) # 

Methods

ppr :: SpliceDecl name -> SDoc #

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

OutputableBndrId name => Outputable (HsGroup name) # 

Methods

ppr :: HsGroup name -> SDoc #

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

OutputableBndrId name => Outputable (HsDecl name) # 

Methods

ppr :: HsDecl name -> SDoc #

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

(Outputable id, Outputable (NameOrRdrName id)) => Outputable (HsStmtContext id) # 
OutputableBndr id => Outputable (HsMatchContext id) # 
OutputableBndrId id => Outputable (ArithSeqInfo id) # 

Methods

ppr :: ArithSeqInfo id -> SDoc #

pprPrec :: Rational -> ArithSeqInfo id -> SDoc #

OutputableBndrId id => Outputable (HsBracket id) # 

Methods

ppr :: HsBracket id -> SDoc #

pprPrec :: Rational -> HsBracket id -> SDoc #

OutputableBndrId id => Outputable (HsSplicedThing id) # 
OutputableBndrId id => Outputable (HsCmdTop id) # 

Methods

ppr :: HsCmdTop id -> SDoc #

pprPrec :: Rational -> HsCmdTop id -> SDoc #

(OutputableBndrId name, HasOccName name) => Outputable (HsModule name) # 

Methods

ppr :: HsModule name -> SDoc #

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

OutputableBndrId a => Outputable (InstInfo a) # 

Methods

ppr :: InstInfo a -> SDoc #

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

Outputable (FunDepEqn a) # 

Methods

ppr :: FunDepEqn a -> SDoc #

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

Outputable a => Outputable (StopOrContinue a) # 
Outputable theta => Outputable (DerivSpec theta) # 

Methods

ppr :: DerivSpec theta -> SDoc #

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

Outputable a => Outputable (ProtoBCO a) # 

Methods

ppr :: ProtoBCO a -> SDoc #

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

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

Methods

ppr :: Either a b -> SDoc #

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

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

Methods

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

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

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

Methods

ppr :: Map key elt -> SDoc #

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

(Outputable l, Outputable e) => Outputable (GenLocated l e) # 

Methods

ppr :: GenLocated l e -> SDoc #

pprPrec :: Rational -> GenLocated l e -> SDoc #

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 #

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

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

Methods

ppr :: GenStgExpr bndr bdee -> SDoc #

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

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

Methods

ppr :: GenStgBinding bndr bdee -> SDoc #

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

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

Methods

ppr :: GenStgTopBinding bndr bdee -> SDoc #

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

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

Methods

ppr :: HsConDetails arg rec -> SDoc #

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

Outputable thing => Outputable (HsWildCardBndrs name thing) # 

Methods

ppr :: HsWildCardBndrs name thing -> SDoc #

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

Outputable thing => Outputable (HsImplicitBndrs name thing) # 

Methods

ppr :: HsImplicitBndrs name thing -> SDoc #

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

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

Methods

ppr :: PatSynBind idL idR -> SDoc #

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

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

Methods

ppr :: HsBindLR idL idR -> SDoc #

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

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

Methods

ppr :: HsValBindsLR idL idR -> SDoc #

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

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

Methods

ppr :: HsLocalBindsLR idL idR -> SDoc #

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

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

Methods

ppr :: HsRecField' id arg -> SDoc #

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

Outputable arg => Outputable (HsRecFields id arg) # 

Methods

ppr :: HsRecFields id arg -> SDoc #

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

OutputableBndrId idL => Outputable (ParStmtBlock idL idR) # 

Methods

ppr :: ParStmtBlock idL idR -> SDoc #

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

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

Methods

ppr :: Match idR body -> SDoc #

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

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

Methods

ppr :: RegAllocStats statics instr -> SDoc #

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

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

Methods

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

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

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

Methods

ppr :: StmtLR idL idR body -> SDoc #

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

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

Methods

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

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

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

Methods

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

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

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

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

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

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

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.

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 #

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 #

initSDocContext :: DynFlags -> PprStyle -> SDocContext #

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

Returns the separated concatenation of the pretty printed things.

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

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

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

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

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

pprWithCommas #

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 #

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 #

Indent SDoc some specified amount

char :: Char -> SDoc #

int :: Int -> SDoc #

doublePrec :: Int -> Double -> SDoc #

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

cparen :: Bool -> SDoc -> 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 #

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 #

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

punctuate #

Arguments

:: SDoc

The punctuation

-> [SDoc]

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

-> [SDoc]

Punctuated list

ppWhen :: Bool -> SDoc -> SDoc #

speakNth :: Int -> SDoc #

Converts an integer to a verbal index:

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

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'

isOrAre :: [a] -> SDoc #

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 #

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 #

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 () #

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 () #

Like printSDoc but appends an extra newline.

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

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

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

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

pprHsChar :: Char -> SDoc #

Special combinator for showing character literals.

pprHsString :: FastString -> SDoc #

Special combinator for showing string literals.

pprHsBytes :: ByteString -> SDoc #

Special combinator for showing bytestring literals.

pprPrimChar :: Char -> SDoc #

Special combinator for showing unboxed literals.

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. 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 PprStyle #

Instances

data CodeStyle #

Constructors

CStyle 
AsmStyle 

data PrintUnqualified #

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 #

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 #

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

type QueryQualifyPackage = UnitId -> Bool #

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

alwaysQualifyNames :: QueryQualifyName #

NB: This won't ever show package IDs

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

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 #

Truncate a list that is longer than the current depth.

mkErrStyle :: DynFlags -> PrintUnqualified -> PprStyle #

Style for printing error messages

data Depth #

Constructors

AllTheWay 
PartWay Int 

Error handling and debugging utilities

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

Throw an exception saying "bug in GHC"

pprSorry :: String -> SDoc -> a #

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

assertPprPanic :: HasCallStack => 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

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

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

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

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

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

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

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 #

Panics and asserts.

panic :: String -> a #

Panics and asserts.

sorry :: String -> a #

Panics and asserts.

assertPanic :: String -> Int -> a #

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

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