| Copyright | (c) Alec Theriault 2017-2018 | 
|---|---|
| License | BSD-style | 
| Maintainer | alec.theriault@gmail.com | 
| Stability | experimental | 
| Portability | GHC | 
| Safe Haskell | Safe | 
| Language | Haskell2010 | 
Language.Rust.Data.Position
Contents
Description
Everything to do with describing a position or a contiguous region in a file.
- data Position
- = Position { }
 - | NoPosition
 
 - prettyPosition :: Position -> String
 - maxPos :: Position -> Position -> Position
 - minPos :: Position -> Position -> Position
 - initPos :: Position
 - incPos :: Position -> Int -> Position
 - retPos :: Position -> Position
 - incOffset :: Position -> Int -> Position
 - data Span = Span {}
 - unspan :: Spanned a -> a
 - prettySpan :: Span -> String
 - subsetOf :: Span -> Span -> Bool
 - (#) :: (Located a, Located b) => a -> b -> Span
 - data Spanned a = Spanned a !Span
 - class Located a where
 
Positions in files
A position in a source file. The row and column information is kept only for its convenience and human-readability. Analogous to the information encoded in a cursor.
Constructors
| Position | |
| NoPosition | |
maxPos :: Position -> Position -> Position Source #
Maximum of two positions, bias for actual positions.
>>>maxPos (Position 30 5 8) (Position 37 5 15)Position 37 5 15
>>>maxPos NoPosition (Position 30 5 8)Position 30 5 8
minPos :: Position -> Position -> Position Source #
Maximum and minimum positions, bias for actual positions.
>>>minPos (Position 30 5 8) (Position 37 5 15)Position 30 5 8
>>>minPos NoPosition (Position 30 5 8)Position 30 5 8
incOffset :: Position -> Int -> Position Source #
Advance only the absolute offset, not the row and column information. Only use this if you know what you are doing!
Spans in files
Spans represent a contiguous region of code, delimited by two Positions. The endpoints are
 inclusive. Analogous to the information encoded in a selection.
Instances
| Eq Span Source # | |
| Data Span Source # | |
| Ord Span Source # | |
| Show Span Source # | Field names are not shown  | 
| Generic Span Source # | |
| Semigroup Span Source # | smallest covering   | 
| Monoid Span Source # | |
| NFData Span Source # | |
| Located Span Source # | |
| Pretty Span Source # | |
| Parse (WhereClause Span) Source # | |
| Parse (TyParam Span) Source # | |
| Parse (Ty Span) Source # | |
| Parse (TraitItem Span) Source # | |
| Parse (Stmt Span) Source # | |
| Parse (Pat Span) Source # | |
| Parse (Lit Span) Source # | |
| Parse (SourceFile Span) Source # | |
| Parse (LifetimeDef Span) Source # | |
| Parse (Item Span) Source # | |
| Parse (ImplItem Span) Source # | |
| Parse (Generics Span) Source # | |
| Parse (Expr Span) Source # | |
| Parse (Block Span) Source # | |
| Parse (Attribute Span) Source # | |
| type Rep Span Source # | |
A "tagging" of something with a Span that describes its extent.
Instances
| Monad Spanned Source # | |
| Functor Spanned Source # | |
| Applicative Spanned Source # | |
| Eq a => Eq (Spanned a) Source # | |
| Data a => Data (Spanned a) Source # | |
| Ord a => Ord (Spanned a) Source # | |
| Show a => Show (Spanned a) Source # | |
| Generic (Spanned a) Source # | |
| NFData a => NFData (Spanned a) Source # | |
| Located (Spanned a) Source # | |
| type Rep (Spanned a) Source # | |
class Located a where Source #
Describes nodes that can be located - their span can be extracted from them. In general, we
 expect that for a value constructed as Con x y z where Con is an arbitrary constructor
(spanOf x <> spanOf y <> spanOf z) `subsetOf` spanOf (Con x y z) == True
Minimal complete definition
Instances