ghc-exactprint-1.9.0.0: ExactPrint for GHC
Safe HaskellNone
LanguageHaskell2010

Language.Haskell.GHC.ExactPrint.Utils

Synopsis

Documentation

debugEnabledFlag :: Bool #

Global switch to enable debug tracing in ghc-exactprint Delta / Print

debug :: c -> String -> c #

Provide a version of trace that comes at the end of the line, so it can easily be commented out when debugging different things.

debugM :: Monad m => String -> m () #

warn :: c -> String -> c #

isGoodDelta :: DeltaPos -> Bool #

A good delta has no negative values.

ss2delta :: Pos -> RealSrcSpan -> DeltaPos #

Create a delta from the current position to the start of the given RealSrcSpan.

ss2deltaEnd :: RealSrcSpan -> RealSrcSpan -> DeltaPos #

create a delta from the end of a current span. The +1 is because the stored position ends up one past the span, this is prior to that adjustment

ss2deltaStart :: RealSrcSpan -> RealSrcSpan -> DeltaPos #

create a delta from the start of a current span. The +1 is because the stored position ends up one past the span, this is prior to that adjustment

pos2delta :: Pos -> Pos -> DeltaPos #

Convert the start of the second Pos to be an offset from the first. The assumption is the reference starts before the second Pos

undelta :: Pos -> DeltaPos -> LayoutStartCol -> Pos #

Apply the delta to the current position, taking into account the current column offset if advancing to a new line

eloc2str :: EpaLocation -> String #

Useful for debug dumps

isPointSrcSpan :: RealSrcSpan -> Bool #

Checks whether a SrcSpan has zero length.

commentOrigDelta :: LEpaComment -> LEpaComment #

A GHC comment includes the span of the preceding token. Take an original comment, and convert the 'Anchor to have a have a MovedAnchor operation based on the original location, only if it does not already have one.

needsWhere :: forall (p :: Pass). DataDefnCons (LConDecl (GhcPass p)) -> Bool #

insertCppComments :: ParsedSource -> [LEpaComment] -> ParsedSource #

Insert the comments at the appropriate places in the AST

data SplitWhere #

Constructors

Before 
After 

cmpComments :: Comment -> Comment -> Ordering #

Must compare without span filenames, for CPP injected comments with fake filename

sortComments :: [Comment] -> [Comment] #

Sort, comparing without span filenames, for CPP injected comments with fake filename

sortEpaComments :: [LEpaComment] -> [LEpaComment] #

Sort, comparing without span filenames, for CPP injected comments with fake filename

mkKWComment :: AnnKeywordId -> NoCommentsLocation -> Comment #

Makes a comment which originates from a specific keyword.

dpFromString :: String -> DeltaPos #

Calculates the distance from the start of a string to the end of a string.

decl2Bind :: LHsDecl GhcPs -> [LHsBind GhcPs] #

Pure function to convert a LHsDecl to a LHsBind. This does nothing to any annotations that may be attached to either of the elements. It is used as a utility function in replaceDecls

decl2Sig :: LHsDecl GhcPs -> [LSig GhcPs] #

Pure function to convert a LSig to a LHsBind. This does nothing to any annotations that may be attached to either of the elements. It is used as a utility function in replaceDecls

wrapSig :: LSig GhcPs -> LHsDecl GhcPs #

Convert a LSig into a LHsDecl

showAst :: Data a => a -> String #