srcloc-0.5.1.2: Data types for managing source code locations.

Copyright(c) Harvard University 2006-2011
(c) Geoffrey Mainland 2011-2015
LicenseBSD-style
MaintainerGeoffrey Mainland <mainland@cs.drexel.edu>
Safe HaskellNone
LanguageHaskell98

Data.Loc

Description

 

Synopsis

Documentation

data Pos Source #

Position type.

Constructors

Pos !FilePath !Int !Int !Int

Source file name, line, column, and character offset.

Line numbering starts at 1, column offset starts at 1, and character offset starts at 0.

Instances

Eq Pos Source # 

Methods

(==) :: Pos -> Pos -> Bool #

(/=) :: Pos -> Pos -> Bool #

Data Pos Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pos -> c Pos #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pos #

toConstr :: Pos -> Constr #

dataTypeOf :: Pos -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Pos) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pos) #

gmapT :: (forall b. Data b => b -> b) -> Pos -> Pos #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pos -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pos -> r #

gmapQ :: (forall d. Data d => d -> u) -> Pos -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Pos -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pos -> m Pos #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pos -> m Pos #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pos -> m Pos #

Ord Pos Source # 

Methods

compare :: Pos -> Pos -> Ordering #

(<) :: Pos -> Pos -> Bool #

(<=) :: Pos -> Pos -> Bool #

(>) :: Pos -> Pos -> Bool #

(>=) :: Pos -> Pos -> Bool #

max :: Pos -> Pos -> Pos #

min :: Pos -> Pos -> Pos #

Read Pos Source # 
Show Pos Source # 

Methods

showsPrec :: Int -> Pos -> ShowS #

show :: Pos -> String #

showList :: [Pos] -> ShowS #

Located Pos Source # 

Methods

locOf :: Pos -> Loc Source #

locOfList :: [Pos] -> Loc Source #

posFile :: Pos -> FilePath Source #

Position file.

posLine :: Pos -> Int Source #

Position line.

posCol :: Pos -> Int Source #

Position column.

posCoff :: Pos -> Int Source #

Position character offset.

startPos :: FilePath -> Pos Source #

Starting position for given file.

linePos :: FilePath -> Int -> Pos Source #

Position corresponding to given file and line.

Note that the associated character offset is set to 0.

advancePos :: Pos -> Char -> Pos Source #

Advance a position by a single character. Newlines increment the line number, tabs increase the position column following a tab stop width of 8, and all other characters increase the position column by one. All characters, including newlines and tabs, increase the character offset by 1.

Note that advancePos assumes UNIX-style newlines.

displayPos :: Pos -> String Source #

Format a position in a human-readable way, returning an ordinary String.

displaySPos :: Pos -> ShowS Source #

Format a position in a human-readable way.

data Loc Source #

Location type, consisting of a beginning position and an end position.

Constructors

NoLoc 
Loc !Pos !Pos

Beginning and end positions

Instances

Eq Loc Source # 

Methods

(==) :: Loc -> Loc -> Bool #

(/=) :: Loc -> Loc -> Bool #

Data Loc Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Loc -> c Loc #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Loc #

toConstr :: Loc -> Constr #

dataTypeOf :: Loc -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Loc) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Loc) #

gmapT :: (forall b. Data b => b -> b) -> Loc -> Loc #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Loc -> r #

gmapQ :: (forall d. Data d => d -> u) -> Loc -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Loc -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Loc -> m Loc #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Loc -> m Loc #

Read Loc Source # 
Show Loc Source # 

Methods

showsPrec :: Int -> Loc -> ShowS #

show :: Loc -> String #

showList :: [Loc] -> ShowS #

Semigroup Loc Source # 

Methods

(<>) :: Loc -> Loc -> Loc #

sconcat :: NonEmpty Loc -> Loc #

stimes :: Integral b => b -> Loc -> Loc #

Monoid Loc Source # 

Methods

mempty :: Loc #

mappend :: Loc -> Loc -> Loc #

mconcat :: [Loc] -> Loc #

Located Loc Source # 

Methods

locOf :: Loc -> Loc Source #

locOfList :: [Loc] -> Loc Source #

IsLocation Loc Source # 

Methods

fromLoc :: Loc -> Loc Source #

fromPos :: Pos -> Loc Source #

locStart :: Loc -> Loc Source #

Starting position of the location.

locEnd :: Loc -> Loc Source #

Ending position of the location.

(<-->) :: (Located a, Located b) => a -> b -> Loc infixl 6 Source #

Merge the locations of two Located values.

displayLoc :: Loc -> String Source #

Format a location in a human-readable way, returning an ordinary String.

displaySLoc :: Loc -> ShowS Source #

Format a location in a human-readable way.

newtype SrcLoc Source #

Source location type. Source location are all equal, which allows AST nodes to be compared modulo location information.

Constructors

SrcLoc Loc 

Instances

Eq SrcLoc Source # 

Methods

(==) :: SrcLoc -> SrcLoc -> Bool #

(/=) :: SrcLoc -> SrcLoc -> Bool #

Data SrcLoc Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SrcLoc -> c SrcLoc #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SrcLoc #

toConstr :: SrcLoc -> Constr #

dataTypeOf :: SrcLoc -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SrcLoc) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SrcLoc) #

gmapT :: (forall b. Data b => b -> b) -> SrcLoc -> SrcLoc #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SrcLoc -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SrcLoc -> r #

gmapQ :: (forall d. Data d => d -> u) -> SrcLoc -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SrcLoc -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SrcLoc -> m SrcLoc #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcLoc -> m SrcLoc #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SrcLoc -> m SrcLoc #

Ord SrcLoc Source # 
Read SrcLoc Source # 
Show SrcLoc Source # 
Semigroup SrcLoc Source # 
Monoid SrcLoc Source # 
Located SrcLoc Source # 
IsLocation SrcLoc Source # 

srclocOf :: Located a => a -> SrcLoc Source #

The SrcLoc of a Located value.

srcspan :: (Located a, Located b) => a -> b -> SrcLoc infixl 6 Source #

A SrcLoc with (minimal) span that includes two Located values.

class IsLocation a where Source #

Locations

Minimal complete definition

fromLoc

Methods

fromLoc :: Loc -> a Source #

fromPos :: Pos -> a Source #

noLoc :: IsLocation a => a Source #

No location.

class Located a where Source #

Located values have a location.

Minimal complete definition

locOf

Methods

locOf :: a -> Loc Source #

locOfList :: [a] -> Loc Source #

Instances

Located SrcLoc Source # 
Located Loc Source # 

Methods

locOf :: Loc -> Loc Source #

locOfList :: [Loc] -> Loc Source #

Located Pos Source # 

Methods

locOf :: Pos -> Loc Source #

locOfList :: [Pos] -> Loc Source #

Located a => Located [a] Source # 

Methods

locOf :: [a] -> Loc Source #

locOfList :: [[a]] -> Loc Source #

Located a => Located (Maybe a) Source # 

Methods

locOf :: Maybe a -> Loc Source #

locOfList :: [Maybe a] -> Loc Source #

Located (L a) Source # 

Methods

locOf :: L a -> Loc Source #

locOfList :: [L a] -> Loc Source #

class Relocatable a where Source #

Values that can be relocated

Minimal complete definition

reloc

Methods

reloc :: Loc -> a -> a Source #

Instances

Relocatable (L a) Source # 

Methods

reloc :: Loc -> L a -> L a Source #

data L a Source #

A value of type L a is a value of type a with an associated Loc, but this location is ignored when performing comparisons.

Constructors

L Loc a 

Instances

Functor L Source # 

Methods

fmap :: (a -> b) -> L a -> L b #

(<$) :: a -> L b -> L a #

Eq x => Eq (L x) Source # 

Methods

(==) :: L x -> L x -> Bool #

(/=) :: L x -> L x -> Bool #

Data a => Data (L a) Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> L a -> c (L a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (L a) #

toConstr :: L a -> Constr #

dataTypeOf :: L a -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (L a)) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (L a)) #

gmapT :: (forall b. Data b => b -> b) -> L a -> L a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> L a -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> L a -> r #

gmapQ :: (forall d. Data d => d -> u) -> L a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> L a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> L a -> m (L a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> L a -> m (L a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> L a -> m (L a) #

Ord x => Ord (L x) Source # 

Methods

compare :: L x -> L x -> Ordering #

(<) :: L x -> L x -> Bool #

(<=) :: L x -> L x -> Bool #

(>) :: L x -> L x -> Bool #

(>=) :: L x -> L x -> Bool #

max :: L x -> L x -> L x #

min :: L x -> L x -> L x #

Show x => Show (L x) Source # 

Methods

showsPrec :: Int -> L x -> ShowS #

show :: L x -> String #

showList :: [L x] -> ShowS #

Relocatable (L a) Source # 

Methods

reloc :: Loc -> L a -> L a Source #

Located (L a) Source # 

Methods

locOf :: L a -> Loc Source #

locOfList :: [L a] -> Loc Source #

unLoc :: L a -> a Source #