| ghc-6.10.4: The GHC API | Contents | Index

SrcLoc

Contents

SrcLoc
  Constructing SrcLoc
  Unsafely deconstructing SrcLoc
  Misc. operations on SrcLoc
  Predicates on SrcLoc
SrcSpan
  Constructing SrcSpan
  Deconstructing SrcSpan
  Unsafely deconstructing SrcSpan
  Predicates on SrcSpan
Located
  Constructing Located
  Deconstructing Located
  Combining and comparing Located values

Description
This module contains types that relate to the positions of things in source files, and allow tagging of those things with locations
Synopsis

data SrcLoc
mkSrcLoc :: FastString -> Int -> Int -> SrcLoc
mkGeneralSrcLoc :: FastString -> SrcLoc
noSrcLoc :: SrcLoc
generatedSrcLoc :: SrcLoc
interactiveSrcLoc :: SrcLoc
advanceSrcLoc :: SrcLoc -> Char -> SrcLoc
srcLocFile :: SrcLoc -> FastString
srcLocLine :: SrcLoc -> Int
srcLocCol :: SrcLoc -> Int
pprDefnLoc :: SrcSpan -> SDoc
isGoodSrcLoc :: SrcLoc -> Bool
data SrcSpan
mkGeneralSrcSpan :: FastString -> SrcSpan
mkSrcSpan :: SrcLoc -> SrcLoc -> SrcSpan
noSrcSpan :: SrcSpan
wiredInSrcSpan :: SrcSpan
srcLocSpan :: SrcLoc -> SrcSpan
combineSrcSpans :: SrcSpan -> SrcSpan -> SrcSpan
srcSpanStart :: SrcSpan -> SrcLoc
srcSpanEnd :: SrcSpan -> SrcLoc
srcSpanFileName_maybe :: SrcSpan -> Maybe FastString
srcSpanFile :: SrcSpan -> FastString
srcSpanStartLine :: SrcSpan -> Int
srcSpanEndLine :: SrcSpan -> Int
srcSpanStartCol :: SrcSpan -> Int
srcSpanEndCol :: SrcSpan -> Int
isGoodSrcSpan :: SrcSpan -> Bool
isOneLineSpan :: SrcSpan -> Bool
data Located e = L SrcSpan e
noLoc :: e -> Located e
mkGeneralLocated :: String -> e -> Located e
getLoc :: Located e -> SrcSpan
unLoc :: Located 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

SrcLoc
data SrcLoc

Represents a single point within a file
Instances

Eq SrcLoc
Ord SrcLoc
Outputable SrcLoc

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 `SrcLoc`s 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

Eq SrcSpan
Ord SrcSpan
Outputable SrcSpan

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 `SrcSpan`s 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

L SrcSpan e |

Instances

Functor Located
Outputable e => Outputable (Located e)

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 `SrcSpan`s
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