ghc-8.0.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 Serialized # 
Outputable PrimOp # 

Methods

ppr :: PrimOp -> SDoc #

pprPrec :: Rational -> PrimOp -> SDoc #

Outputable OccName # 

Methods

ppr :: OccName -> SDoc #

pprPrec :: Rational -> OccName -> SDoc #

Outputable UnitId # 

Methods

ppr :: UnitId -> SDoc #

pprPrec :: Rational -> UnitId -> SDoc #

Outputable ModuleName # 
Outputable Module # 

Methods

ppr :: Module -> SDoc #

pprPrec :: Rational -> Module -> SDoc #

Outputable Name # 

Methods

ppr :: Name -> SDoc #

pprPrec :: Rational -> Name -> SDoc #

Outputable FastString # 
Outputable PprStyle # 
Outputable IdDetails # 
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 HsDocString # 
Outputable MetaDetails # 
Outputable TCvSubst # 
Outputable UnivCoProvenance # 
Outputable LeftOrRight # 
Outputable Coercion # 
Outputable TyThing # 

Methods

ppr :: TyThing -> SDoc #

pprPrec :: Rational -> TyThing -> SDoc #

Outputable TyBinder # 
Outputable Type # 

Methods

ppr :: Type -> SDoc #

pprPrec :: Rational -> Type -> SDoc #

Outputable IntWithInf # 
Outputable FractionalLit # 
Outputable InlineSpec # 
Outputable InlinePragma # 
Outputable RuleMatchInfo # 
Outputable Activation # 
Outputable CompilerPhase # 
Outputable SuccessFlag # 
Outputable OccInfo # 

Methods

ppr :: OccInfo -> SDoc #

pprPrec :: Rational -> OccInfo -> SDoc #

Outputable OverlapMode # 
Outputable OverlapFlag # 
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 FixityDirection # 
Outputable Fixity # 

Methods

ppr :: Fixity -> SDoc #

pprPrec :: Rational -> Fixity -> SDoc #

Outputable WarningTxt # 
Outputable FunctionOrData # 
Outputable SwapFlag # 
Outputable OneShotInfo # 
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 Phase # 

Methods

ppr :: Phase -> SDoc #

pprPrec :: Rational -> Phase -> SDoc #

Outputable ModLocation # 
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 PackageName # 
Outputable SourcePackageId # 
Outputable ComponentId # 
Outputable GhcMode # 

Methods

ppr :: GhcMode -> SDoc #

pprPrec :: Rational -> GhcMode -> SDoc #

Outputable SafeHaskellMode # 
Outputable Width # 

Methods

ppr :: Width -> SDoc #

pprPrec :: Rational -> Width -> SDoc #

Outputable CmmType # 

Methods

ppr :: CmmType -> SDoc #

pprPrec :: Rational -> CmmType -> SDoc #

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

Methods

ppr :: TyCon -> SDoc #

pprPrec :: Rational -> TyCon -> SDoc #

Outputable Var # 

Methods

ppr :: Var -> SDoc #

pprPrec :: Rational -> Var -> SDoc #

Outputable CoAxiomRule # 
Outputable Role # 

Methods

ppr :: Role -> SDoc #

pprPrec :: Rational -> Role -> SDoc #

Outputable CoAxBranch # 
Outputable LiftingContext # 
Outputable CostCentreStack # 
Outputable CostCentre # 
Outputable EqSpec # 

Methods

ppr :: EqSpec -> SDoc #

pprPrec :: Rational -> EqSpec -> SDoc #

Outputable DataCon # 

Methods

ppr :: DataCon -> SDoc #

pprPrec :: Rational -> DataCon -> SDoc #

Outputable PatSyn # 

Methods

ppr :: PatSyn -> SDoc #

pprPrec :: Rational -> PatSyn -> SDoc #

Outputable ConLike # 

Methods

ppr :: ConLike -> SDoc #

pprPrec :: Rational -> ConLike -> SDoc #

Outputable InScopeSet # 
Outputable ModuleOrigin # 
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 Class # 

Methods

ppr :: Class -> SDoc #

pprPrec :: Rational -> Class -> SDoc #

Outputable PrimElemRep # 
Outputable PrimRep # 

Methods

ppr :: PrimRep -> SDoc #

pprPrec :: Rational -> PrimRep -> SDoc #

Outputable AlgTyConFlav # 
Outputable CoercionHole # 
Outputable VisibilityFlag # 
Outputable RepType # 

Methods

ppr :: RepType -> SDoc #

pprPrec :: Rational -> RepType -> SDoc #

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

Methods

ppr :: AltCon -> SDoc #

pprPrec :: Rational -> AltCon -> 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 TickBoxOp # 
Outputable CafInfo # 

Methods

ppr :: CafInfo -> SDoc #

pprPrec :: Rational -> CafInfo -> SDoc #

Outputable RecSelParent # 
Outputable CoreStats # 
Outputable UnVarGraph # 
Outputable UnVarSet # 
Outputable FamInstMatch # 
Outputable FamInst # 

Methods

ppr :: FamInst -> SDoc #

pprPrec :: Rational -> FamInst -> SDoc #

Outputable PrimCall # 
Outputable CgBreakInfo # 
Outputable UnlinkedBCO # 
Outputable CompiledByteCode # 
Outputable ForeignLabelSource # 
Outputable CLabel # 

Methods

ppr :: CLabel -> SDoc #

pprPrec :: Rational -> CLabel -> SDoc #

Outputable CmmTickScope # 
Outputable UnwindExpr # 
Outputable DebugBlock # 
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 TopSRT # 

Methods

ppr :: TopSRT -> SDoc #

pprPrec :: Rational -> TopSRT -> SDoc #

Outputable ParamLocation # 
Outputable Status # 

Methods

ppr :: Status -> SDoc #

pprPrec :: Rational -> Status -> SDoc #

Outputable LiveInfo # 
Outputable SpillStats # 
Outputable Loc # 

Methods

ppr :: Loc -> SDoc #

pprPrec :: Rational -> Loc -> SDoc #

Outputable UpdateFlag # 
Outputable AltType # 

Methods

ppr :: AltType -> SDoc #

pprPrec :: Rational -> AltType -> SDoc #

Outputable TcDepVars # 
Outputable TcLevel # 

Methods

ppr :: TcLevel -> SDoc #

pprPrec :: Rational -> TcLevel -> SDoc #

Outputable ExpType # 

Methods

ppr :: ExpType -> SDoc #

pprPrec :: Rational -> ExpType -> SDoc #

Outputable IfaceCoercion # 
Outputable IfaceTyCon # 
Outputable IfaceTcArgs # 
Outputable IfaceTyLit # 
Outputable IfaceType # 
Outputable IfaceBndr # 
Outputable ClsInst # 

Methods

ppr :: ClsInst -> SDoc #

pprPrec :: Rational -> ClsInst -> SDoc #

Outputable Subst # 

Methods

ppr :: Subst -> SDoc #

pprPrec :: Rational -> Subst -> SDoc #

Outputable CallCtxt # 
Outputable ArgSummary # 
Outputable CgLoc # 

Methods

ppr :: CgLoc -> SDoc #

pprPrec :: Rational -> CgLoc -> SDoc #

Outputable ArgRep # 

Methods

ppr :: ArgRep -> SDoc #

pprPrec :: Rational -> ArgRep -> SDoc #

Outputable Sequel # 

Methods

ppr :: Sequel -> SDoc #

pprPrec :: Rational -> Sequel -> SDoc #

Outputable CgIdInfo # 
Outputable BCInstr # 

Methods

ppr :: BCInstr -> SDoc #

pprPrec :: Rational -> BCInstr -> 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 EvBindsVar # 
Outputable TcEvBinds # 
Outputable HsWrapper # 
Outputable OverLitVal # 
Outputable HsLit # 

Methods

ppr :: HsLit -> SDoc #

pprPrec :: Rational -> HsLit -> SDoc #

Outputable HsTyLit # 

Methods

ppr :: HsTyLit -> SDoc #

pprPrec :: Rational -> HsTyLit -> SDoc #

Outputable HsIPName # 
Outputable TcSpecPrag # 
Outputable DocDecl # 

Methods

ppr :: DocDecl -> SDoc #

pprPrec :: Rational -> DocDecl -> SDoc #

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

Methods

ppr :: PmLit -> SDoc #

pprPrec :: Rational -> PmLit -> SDoc #

Outputable PmExpr # 

Methods

ppr :: PmExpr -> SDoc #

pprPrec :: Rational -> PmExpr -> SDoc #

Outputable AnnotationComment # 
Outputable AnnKeywordId # 
Outputable Token # 

Methods

ppr :: Token -> SDoc #

pprPrec :: Rational -> Token -> SDoc #

Outputable Annotation # 
Outputable IfaceConAlt # 
Outputable IfaceExpr # 
Outputable IfaceIdDetails # 
Outputable IfaceUnfolding # 
Outputable IfaceInfoItem # 
Outputable IfaceIdInfo # 
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 Unlinked # 
Outputable Linkable # 
Outputable IfaceTrustInfo # 
Outputable IfaceVectInfo # 
Outputable VectInfo # 
Outputable ModSummary # 
Outputable FixItem # 

Methods

ppr :: FixItem -> SDoc #

pprPrec :: Rational -> FixItem -> SDoc #

Outputable InteractiveImport # 
Outputable TargetId # 
Outputable Target # 

Methods

ppr :: Target -> SDoc #

pprPrec :: Rational -> Target -> SDoc #

Outputable FloatBind # 
Outputable PhasePlus # 
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 TcIdSigBndr # 
Outputable TcIdSigInfo # 
Outputable TcSigInfo # 
Outputable WhereFrom # 
Outputable PromotionErr # 
Outputable TcTyThing # 
Outputable ThStage # 

Methods

ppr :: ThStage -> SDoc #

pprPrec :: Rational -> ThStage -> SDoc #

Outputable TcIdBinder # 
Outputable Tick # 

Methods

ppr :: Tick -> SDoc #

pprPrec :: Rational -> Tick -> SDoc #

Outputable FloatOutSwitches # 
Outputable SimplifierMode # 
Outputable CoreToDo # 
Outputable FloatSpec # 
Outputable Level # 

Methods

ppr :: Level -> SDoc #

pprPrec :: Rational -> Level -> SDoc #

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 EquationInfo # 
Outputable InertCans # 
Outputable InertSet # 
Outputable WorkList # 
Outputable ClosureType # 
Outputable Term # 

Methods

ppr :: Term -> SDoc #

pprPrec :: Rational -> Term -> SDoc #

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 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 a => Outputable (SCC a) # 

Methods

ppr :: SCC a -> SDoc #

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

Outputable elt => Outputable (IntMap elt) # 

Methods

ppr :: IntMap elt -> SDoc #

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

Outputable a => Outputable (Set a) # 

Methods

ppr :: Set a -> SDoc #

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

Outputable node => Outputable (Graph node) # 

Methods

ppr :: Graph node -> SDoc #

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

Outputable a => Outputable (OrdList a) # 

Methods

ppr :: OrdList a -> SDoc #

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

Outputable a => Outputable (Pair a) # 

Methods

ppr :: Pair a -> SDoc #

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

Outputable a => Outputable (Bag a) # 

Methods

ppr :: Bag a -> SDoc #

pprPrec :: Rational -> Bag 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 (BooleanFormula a) # 
Outputable a => Outputable (UniqDFM a) # 

Methods

ppr :: UniqDFM a -> SDoc #

pprPrec :: Rational -> UniqDFM 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 #

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

Methods

ppr :: ImportDecl name -> SDoc #

pprPrec :: Rational -> ImportDecl 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 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 #

Outputable bdee => Outputable (GenStgArg bdee) # 

Methods

ppr :: GenStgArg bdee -> SDoc #

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

Outputable a => Outputable (NonVoid a) # 

Methods

ppr :: NonVoid a -> SDoc #

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

Outputable a => Outputable (ProtoBCO a) # 

Methods

ppr :: ProtoBCO a -> SDoc #

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

OutputableBndr name => Outputable (Pat name) # 

Methods

ppr :: Pat name -> SDoc #

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

OutputableBndr id => Outputable (SyntaxExpr id) # 

Methods

ppr :: SyntaxExpr id -> SDoc #

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

OutputableBndr id => Outputable (HsSplice id) # 

Methods

ppr :: HsSplice id -> SDoc #

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

OutputableBndr id => Outputable (HsCmd id) # 

Methods

ppr :: HsCmd id -> SDoc #

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

OutputableBndr id => Outputable (HsExpr id) # 

Methods

ppr :: HsExpr id -> SDoc #

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

OutputableBndr id => Outputable (HsOverLit id) # 

Methods

ppr :: HsOverLit id -> SDoc #

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

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

Methods

ppr :: FieldOcc name -> SDoc #

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

OutputableBndr name => Outputable (ConDeclField name) # 

Methods

ppr :: ConDeclField name -> SDoc #

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

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

OutputableBndr name => Outputable (HsType name) # 

Methods

ppr :: HsType name -> SDoc #

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

OutputableBndr name => Outputable (HsTyVarBndr name) # 

Methods

ppr :: HsTyVarBndr name -> SDoc #

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

OutputableBndr name => Outputable (LHsQTyVars name) # 

Methods

ppr :: LHsQTyVars name -> SDoc #

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

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

Methods

ppr :: FixitySig name -> SDoc #

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

OutputableBndr name => Outputable (Sig name) # 

Methods

ppr :: Sig name -> SDoc #

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

OutputableBndr id => Outputable (IPBind id) # 

Methods

ppr :: IPBind id -> SDoc #

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

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

OutputableBndr name => Outputable (RoleAnnotDecl name) # 

Methods

ppr :: RoleAnnotDecl name -> SDoc #

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

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

OutputableBndr name => Outputable (VectDecl name) # 

Methods

ppr :: VectDecl name -> SDoc #

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

OutputableBndr name => Outputable (RuleBndr name) # 

Methods

ppr :: RuleBndr name -> SDoc #

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

OutputableBndr name => Outputable (RuleDecl name) # 

Methods

ppr :: RuleDecl name -> SDoc #

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

OutputableBndr name => Outputable (RuleDecls name) # 

Methods

ppr :: RuleDecls name -> SDoc #

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

OutputableBndr name => Outputable (ForeignDecl name) # 

Methods

ppr :: ForeignDecl name -> SDoc #

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

OutputableBndr name => Outputable (DefaultDecl name) # 

Methods

ppr :: DefaultDecl name -> SDoc #

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

OutputableBndr name => Outputable (DerivDecl name) # 

Methods

ppr :: DerivDecl name -> SDoc #

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

OutputableBndr name => Outputable (InstDecl name) # 

Methods

ppr :: InstDecl name -> SDoc #

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

OutputableBndr name => Outputable (ClsInstDecl name) # 

Methods

ppr :: ClsInstDecl name -> SDoc #

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

OutputableBndr name => Outputable (DataFamInstDecl name) # 

Methods

ppr :: DataFamInstDecl name -> SDoc #

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

OutputableBndr name => Outputable (TyFamInstDecl name) # 

Methods

ppr :: TyFamInstDecl name -> SDoc #

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

OutputableBndr name => Outputable (ConDecl name) # 

Methods

ppr :: ConDecl name -> SDoc #

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

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

OutputableBndr name => Outputable (FamilyDecl name) # 

Methods

ppr :: FamilyDecl name -> SDoc #

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

OutputableBndr name => Outputable (TyClGroup name) # 

Methods

ppr :: TyClGroup name -> SDoc #

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

OutputableBndr name => Outputable (TyClDecl name) # 

Methods

ppr :: TyClDecl name -> SDoc #

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

OutputableBndr name => Outputable (SpliceDecl name) # 

Methods

ppr :: SpliceDecl name -> SDoc #

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

OutputableBndr name => Outputable (HsGroup name) # 

Methods

ppr :: HsGroup name -> SDoc #

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

OutputableBndr name => Outputable (HsDecl name) # 

Methods

ppr :: HsDecl name -> SDoc #

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

OutputableBndr id => Outputable (ArithSeqInfo id) # 

Methods

ppr :: ArithSeqInfo id -> SDoc #

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

OutputableBndr id => Outputable (HsBracket id) # 

Methods

ppr :: HsBracket id -> SDoc #

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

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

Methods

ppr :: HsCmdTop id -> SDoc #

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

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

Methods

ppr :: HsModule name -> SDoc #

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

Outputable name => Outputable (AnnTarget name) # 

Methods

ppr :: AnnTarget name -> SDoc #

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

OutputableBndr a => Outputable (InstInfo a) # 

Methods

ppr :: InstInfo a -> SDoc #

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

Outputable a => Outputable (StopOrContinue a) # 
(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 statics, Outputable instr) => Outputable (RegAllocStats statics instr) # 

Methods

ppr :: RegAllocStats statics instr -> SDoc #

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

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

(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, OutputableBndr idR) => Outputable (PatSynBind idL idR) # 

Methods

ppr :: PatSynBind idL idR -> SDoc #

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

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

Methods

ppr :: HsBindLR idL idR -> SDoc #

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

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

Methods

ppr :: HsValBindsLR idL idR -> SDoc #

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

(OutputableBndr idL, OutputableBndr 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 #

OutputableBndr idL => Outputable (ParStmtBlock idL idR) # 

Methods

ppr :: ParStmtBlock idL idR -> SDoc #

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

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

Methods

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

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

(OutputableBndr idL, OutputableBndr 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

Pretty printing combinators

data SDoc #

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.

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.

data PprColour #

A colour/style for use with coloured.

bold :: SDoc -> SDoc #

Converting SDoc into strings and outputing it

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

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.

Constructors

LambdaBind 
CaseBind 
LetBind 

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 unit id to disambiguate it.

alwaysQualifyNames :: QueryQualifyName #

NB: This won't ever show package IDs

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 :: String -> SDoc -> a #

Throw an exception saying "bug in GHC"

pprSorry :: String -> SDoc -> a #

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

assertPprPanic :: (?callStack :: CallStack) => 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

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 :: (?callStack :: CallStack) => 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 #