| Safe Haskell | None | 
|---|
SrcLoc
Contents
Description
This module contains types that relate to the positions of things in source files, and allow tagging of those things with locations
- data RealSrcLoc
 - data SrcLoc
 - mkSrcLoc :: FastString -> Int -> Int -> SrcLoc
 - mkRealSrcLoc :: FastString -> Int -> Int -> RealSrcLoc
 - mkGeneralSrcLoc :: FastString -> SrcLoc
 - noSrcLoc :: SrcLoc
 - generatedSrcLoc :: SrcLoc
 - interactiveSrcLoc :: SrcLoc
 - advanceSrcLoc :: RealSrcLoc -> Char -> RealSrcLoc
 - srcLocFile :: RealSrcLoc -> FastString
 - srcLocLine :: RealSrcLoc -> Int
 - srcLocCol :: RealSrcLoc -> Int
 - data RealSrcSpan
 - data SrcSpan
 - mkGeneralSrcSpan :: FastString -> SrcSpan
 - mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
 - mkRealSrcSpan :: RealSrcLoc -> RealSrcLoc -> RealSrcSpan
 - noSrcSpan :: SrcSpan
 - wiredInSrcSpan :: SrcSpan
 - srcLocSpan :: SrcLoc -> SrcSpan
 - realSrcLocSpan :: RealSrcLoc -> RealSrcSpan
 - combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan
 - srcSpanStart :: SrcSpan -> SrcLoc
 - srcSpanEnd :: SrcSpan -> SrcLoc
 - realSrcSpanStart :: RealSrcSpan -> RealSrcLoc
 - realSrcSpanEnd :: RealSrcSpan -> RealSrcLoc
 - srcSpanFileName_maybe :: SrcSpan -> Maybe FastString
 - showUserSpan :: Bool -> SrcSpan -> String
 - srcSpanFile :: RealSrcSpan -> FastString
 - srcSpanStartLine :: RealSrcSpan -> Int
 - srcSpanEndLine :: RealSrcSpan -> Int
 - srcSpanStartCol :: RealSrcSpan -> Int
 - srcSpanEndCol :: RealSrcSpan -> Int
 - isGoodSrcSpan :: SrcSpan -> Bool
 - isOneLineSpan :: SrcSpan -> Bool
 - type Located e = GenLocated SrcSpan e
 - type RealLocated e = GenLocated RealSrcSpan e
 - data GenLocated l e = L l e
 - noLoc :: e -> Located e
 - mkGeneralLocated :: String -> e -> Located e
 - getLoc :: GenLocated l e -> l
 - unLoc :: GenLocated l e -> e
 - eqLocated :: Eq a => Located a -> Located a -> Bool
 - cmpLocated :: Ord a => Located a -> Located a -> Ordering
 - combineLocs :: Located a -> Located b -> SrcSpan
 - addCLoc :: Located a -> Located b -> c -> Located c
 - leftmost_smallest :: SrcSpan -> SrcSpan -> Ordering
 - leftmost_largest :: SrcSpan -> SrcSpan -> Ordering
 - rightmost :: SrcSpan -> SrcSpan -> Ordering
 - spans :: SrcSpan -> (Int, Int) -> Bool
 - isSubspanOf :: SrcSpan -> SrcSpan -> Bool
 - sortLocated :: [Located a] -> [Located a]
 
SrcLoc
Constructors
| RealSrcLoc !RealSrcLoc | |
| UnhelpfulLoc FastString | 
Constructing SrcLoc
mkRealSrcLoc :: FastString -> Int -> Int -> RealSrcLocSource
advanceSrcLoc :: RealSrcLoc -> Char -> RealSrcLocSource
Move the SrcLoc down by one line if the character is a newline,
 to the next 8-char tabstop if it is a tab, and across by one
 character in any other case
Unsafely deconstructing SrcLoc
srcLocFile :: RealSrcLoc -> FastStringSource
Gives the filename of the RealSrcLoc
srcLocLine :: RealSrcLoc -> IntSource
SrcSpan
data RealSrcSpan Source
A SrcSpan delimits a portion of a text file. It could be represented by a pair of (line,column) coordinates, but in fact we optimise slightly by using more compact representations for single-line and zero-length spans, both of which are quite common.
The end position is defined to be the column after the end of the span. That is, a span of (1,1)-(1,2) is one character long, and a span of (1,1)-(1,1) is zero characters long.
Constructors
| RealSrcSpan !RealSrcSpan | |
| UnhelpfulSpan !FastString | 
Constructing SrcSpan
mkRealSrcSpan :: RealSrcLoc -> RealSrcLoc -> RealSrcSpanSource
Create a SrcSpan between two points in a file
srcLocSpan :: SrcLoc -> SrcSpanSource
Create a SrcSpan corresponding to a single point
combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpanSource
Deconstructing SrcSpan
srcSpanStart :: SrcSpan -> SrcLocSource
srcSpanEnd :: SrcSpan -> SrcLocSource
showUserSpan :: Bool -> SrcSpan -> StringSource
Unsafely deconstructing SrcSpan
Predicates on SrcSpan
isGoodSrcSpan :: SrcSpan -> BoolSource
isOneLineSpan :: SrcSpan -> BoolSource
Located
type Located e = GenLocated SrcSpan eSource
type RealLocated e = GenLocated RealSrcSpan eSource
data GenLocated l e Source
We attach SrcSpans to lots of things, so let's have a datatype for it.
Constructors
| L l e | 
Instances
| Functor (GenLocated l) | |
| (Eq l, Eq e) => Eq (GenLocated l e) | |
| (Data l, Data e) => Data (GenLocated l e) | |
| (Ord l, Ord e) => Ord (GenLocated l e) | |
| (Outputable l, Outputable e) => Outputable (GenLocated l e) | |
| Typeable (* -> * -> *) GenLocated | 
Constructing Located
mkGeneralLocated :: String -> e -> Located eSource
Deconstructing Located
getLoc :: GenLocated l e -> lSource
unLoc :: GenLocated l e -> eSource
Combining and comparing Located values
eqLocated :: Eq a => Located a -> Located a -> BoolSource
Tests whether the two located things are equal
cmpLocated :: Ord a => Located a -> Located a -> OrderingSource
Tests the ordering of the two located things
combineLocs :: Located a -> Located b -> SrcSpanSource
addCLoc :: Located a -> Located b -> c -> Located cSource
Combine locations from two Located things and add them to a third thing
leftmost_smallest :: SrcSpan -> SrcSpan -> OrderingSource
Alternative strategies for ordering SrcSpans
leftmost_largest :: SrcSpan -> SrcSpan -> OrderingSource
Alternative strategies for ordering SrcSpans
spans :: SrcSpan -> (Int, Int) -> BoolSource
Determines whether a span encloses a given line and column index
Arguments
| :: SrcSpan | The span that may be enclosed by the other  | 
| -> SrcSpan | The span it may be enclosed by  | 
| -> Bool | 
Determines whether a span is enclosed by another one
sortLocated :: [Located a] -> [Located a]Source