|
|
|
|
|
| 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.7.2 |