|
|
|
|
|
Description |
This module contains types that relate to the positions of things
in source files, and allow tagging of those things with locations
|
|
Synopsis |
|
|
|
|
SrcLoc
|
|
data SrcLoc |
Represents a single point within a file
| Instances | |
|
|
Constructing SrcLoc
|
|
mkSrcLoc :: FastString -> Int -> Int -> SrcLoc |
|
mkGeneralSrcLoc :: FastString -> SrcLoc |
Creates a bad SrcLoc that has no detailed information about its location
|
|
noSrcLoc :: SrcLoc |
|
generatedSrcLoc :: SrcLoc |
Built-in bad SrcLoc values for particular locations
|
|
interactiveSrcLoc :: SrcLoc |
|
advanceSrcLoc :: SrcLoc -> Char -> SrcLoc |
Move the SrcLoc down by one line if the character is a newline
and across by one character in any other case
|
|
Unsafely deconstructing SrcLoc
|
|
srcLocFile :: SrcLoc -> FastString |
Gives the filename of the SrcLoc if it is available, otherwise returns a dummy value
|
|
srcLocLine :: SrcLoc -> Int |
Raises an error when used on a bad SrcLoc
|
|
srcLocCol :: SrcLoc -> Int |
Raises an error when used on a bad SrcLoc
|
|
Misc. operations on SrcLoc
|
|
pprDefnLoc :: SrcSpan -> SDoc |
Pretty prints information about the SrcSpan in the style defined at ...
|
|
Predicates on SrcLoc
|
|
isGoodSrcLoc :: SrcLoc -> Bool |
Good SrcLocs have precise information about their location
|
|
SrcSpan
|
|
data SrcSpan |
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.
| Instances | |
|
|
Constructing SrcSpan
|
|
mkGeneralSrcSpan :: FastString -> SrcSpan |
Create a bad SrcSpan that has not location information
|
|
mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan |
Create a SrcSpan between two points in a file
|
|
noSrcSpan :: SrcSpan |
|
wiredInSrcSpan :: SrcSpan |
Built-in bad SrcSpans for common sources of location uncertainty
|
|
srcLocSpan :: SrcLoc -> SrcSpan |
Create a SrcSpan corresponding to a single point
|
|
combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan |
Combines two SrcSpan into one that spans at least all the characters
within both spans. Assumes the file part is the same in both inputs
|
|
Deconstructing SrcSpan
|
|
srcSpanStart :: SrcSpan -> SrcLoc |
Returns the location at the start of the SrcSpan or a bad SrcSpan if that is unavailable
|
|
srcSpanEnd :: SrcSpan -> SrcLoc |
Returns the location at the end of the SrcSpan or a bad SrcSpan if that is unavailable
|
|
srcSpanFileName_maybe :: SrcSpan -> Maybe FastString |
Obtains the filename for a SrcSpan if it is good
|
|
Unsafely deconstructing SrcSpan
|
|
srcSpanFile :: SrcSpan -> FastString |
|
srcSpanStartLine :: SrcSpan -> Int |
Raises an error when used on a bad SrcSpan
|
|
srcSpanEndLine :: SrcSpan -> Int |
Raises an error when used on a bad SrcSpan
|
|
srcSpanStartCol :: SrcSpan -> Int |
Raises an error when used on a bad SrcSpan
|
|
srcSpanEndCol :: SrcSpan -> Int |
Raises an error when used on a bad SrcSpan
|
|
Predicates on SrcSpan
|
|
isGoodSrcSpan :: SrcSpan -> Bool |
Test if a SrcSpan is good, i.e. has precise location information
|
|
isOneLineSpan :: SrcSpan -> Bool |
True if the span is known to straddle only one line.
For bad SrcSpan, it returns False
|
|
Located
|
|
data Located e |
We attach SrcSpans to lots of things, so let's have a datatype for it.
| Constructors | | Instances | |
|
|
Constructing Located
|
|
noLoc :: e -> Located e |
|
mkGeneralLocated :: String -> e -> Located e |
|
Deconstructing Located
|
|
getLoc :: Located e -> SrcSpan |
|
unLoc :: Located e -> e |
|
Combining and comparing Located values
|
|
eqLocated :: Eq a => Located a -> Located a -> Bool |
Tests whether the two located things are equal
|
|
cmpLocated :: Ord a => Located a -> Located a -> Ordering |
Tests the ordering of the two located things
|
|
combineLocs :: Located a -> Located b -> SrcSpan |
|
addCLoc :: Located a -> Located b -> c -> Located c |
Combine locations from two Located things and add them to a third thing
|
|
leftmost_smallest :: SrcSpan -> SrcSpan -> Ordering |
|
leftmost_largest :: SrcSpan -> SrcSpan -> Ordering |
Alternative strategies for ordering SrcSpans
|
|
rightmost :: SrcSpan -> SrcSpan -> Ordering |
|
spans :: SrcSpan -> (Int, Int) -> Bool |
Determines whether a span encloses a given line and column index
|
|
isSubspanOf |
:: 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
|
|
|
Produced by Haddock version 2.4.2 |