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

Language.Haskell.GHC.ExactPrint.Utils

Synopsis

Documentation

debugEnabledFlag :: Bool Source #

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

debug :: c -> String -> c Source #

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

warn :: c -> String -> c Source #

isGoodDelta :: DeltaPos -> Bool Source #

A good delta has no negative values.

ss2delta :: Pos -> RealSrcSpan -> DeltaPos Source #

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

ss2deltaEnd :: RealSrcSpan -> RealSrcSpan -> DeltaPos Source #

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

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

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

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

undeltaSpan :: RealSrcSpan -> AnnKeywordId -> DeltaPos -> AddEpAnn Source #

adjustDeltaForOffset :: LayoutStartCol -> DeltaPos -> DeltaPos Source #

ss2pos :: RealSrcSpan -> Pos Source #

ss2posEnd :: RealSrcSpan -> Pos Source #

ss2range :: SrcSpan -> (Pos, Pos) Source #

rs2range :: RealSrcSpan -> (Pos, Pos) Source #

rs :: SrcSpan -> RealSrcSpan Source #

range2rs :: (Pos, Pos) -> RealSrcSpan Source #

badRealSrcSpan :: RealSrcSpan Source #

spanLength :: RealSrcSpan -> Int Source #

isPointSrcSpan :: RealSrcSpan -> Bool Source #

Checks whether a SrcSpan has zero length.

origDelta :: RealSrcSpan -> RealSrcSpan -> DeltaPos Source #

tweakDelta :: DeltaPos -> DeltaPos Source #

For comment-related deltas starting on a new line we have an off-by-one problem. Adjust

orderByKey :: [(RealSrcSpan, a)] -> [RealSrcSpan] -> [(RealSrcSpan, a)] Source #

Given a list of items and a list of keys, returns a list of items ordered by their position in the list of keys.

isListComp :: HsDoFlavour -> Bool Source #

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

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

ghcCommentText :: LEpaComment -> String Source #

tokComment :: LEpaComment -> [Comment] Source #

hsDocStringComments :: Anchor -> RealSrcSpan -> HsDocString -> [Comment] Source #

dedentDocChunk :: LHsDocStringChunk -> LHsDocStringChunk Source #

dedentDocChunkBy :: Int -> LHsDocStringChunk -> LHsDocStringChunk Source #

printDecorator :: HsDocStringDecorator -> String Source #

mkEpaComments :: [Comment] -> [Comment] -> EpAnnComments Source #

mkLEpaComment :: String -> Anchor -> RealSrcSpan -> LEpaComment Source #

mkComment :: String -> Anchor -> RealSrcSpan -> Comment Source #

normaliseCommentText :: String -> String Source #

cmpComments :: Comment -> Comment -> Ordering Source #

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

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

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

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

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

mkKWComment :: AnnKeywordId -> EpaLocation -> Comment Source #

Makes a comment which originates from a specific keyword.

isKWComment :: Comment -> Bool Source #

Detects a comment which originates from a specific keyword.

sortAnchorLocated :: [GenLocated Anchor a] -> [GenLocated Anchor a] Source #

dpFromString :: String -> DeltaPos Source #

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

isSymbolRdrName :: RdrName -> Bool Source #

rdrName2String :: RdrName -> String Source #

name2String :: Name -> String Source #

locatedAnAnchor :: LocatedAn a t -> RealSrcSpan Source #

setAnchorAn :: Default an => LocatedAn an a -> Anchor -> EpAnnComments -> LocatedAn an a Source #

setAnchorEpa :: Default an => EpAnn an -> Anchor -> EpAnnComments -> EpAnn an Source #

setAnchorEpaL :: EpAnn AnnList -> Anchor -> EpAnnComments -> EpAnn AnnList Source #

setAnchorHsModule :: HsModule GhcPs -> Anchor -> EpAnnComments -> HsModule GhcPs Source #

moveAnchor :: Monoid b => SrcAnn a -> SrcAnn b Source #

Version of l2l that preserves the anchor, immportant if it has an updated AnchorOperation

trailingAnnLoc :: TrailingAnn -> EpaLocation Source #

setTrailingAnnLoc :: TrailingAnn -> EpaLocation -> TrailingAnn Source #

addEpAnnLoc :: AddEpAnn -> EpaLocation Source #

anchorToEpaLocation :: Anchor -> EpaLocation Source #

hackSrcSpanToAnchor :: SrcSpan -> Anchor Source #

hackAnchorToSrcSpan :: Anchor -> SrcSpan Source #