futhark
Safe HaskellNone
LanguageGHC2021

Language.Futhark.Query

Description

Facilities for answering queries about a program, such as "what appears at this source location", or "where is this name bound". The intent is that this is used as a building block for IDE-like functionality.

Synopsis

Documentation

data BoundTo Source #

What a name is bound to.

Constructors

BoundTerm TermBinding Loc

inferred type, optional ascription from source

BoundModule Loc 
BoundModuleType Loc 
BoundType Loc 

Instances

Instances details
Show BoundTo Source # 
Instance details

Defined in Language.Futhark.Query

Eq BoundTo Source # 
Instance details

Defined in Language.Futhark.Query

Methods

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

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

Located BoundTo Source # 
Instance details

Defined in Language.Futhark.Query

Methods

locOf :: BoundTo -> Loc #

locOfList :: [BoundTo] -> Loc #

boundLoc :: BoundTo -> Loc Source #

Where was a bound variable actually bound? That is, what is the location of its definition?

data AtPos Source #

Information about what is at the given source location.

Constructors

AtName (QualName VName) (Maybe BoundTo) Loc 

Instances

Instances details
Show AtPos Source # 
Instance details

Defined in Language.Futhark.Query

Methods

showsPrec :: Int -> AtPos -> ShowS #

show :: AtPos -> String #

showList :: [AtPos] -> ShowS #

Eq AtPos Source # 
Instance details

Defined in Language.Futhark.Query

Methods

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

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

atPos :: Imports -> Pos -> Maybe AtPos Source #

Information about what's at the given source position. Returns Nothing if there is nothing there, including if the source position is invalid.

data Pos #

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

Instances details
Data Pos # 
Instance details

Defined in Data.Loc

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 :: forall r r'. (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 #

Read Pos # 
Instance details

Defined in Data.Loc

Show Pos # 
Instance details

Defined in Data.Loc

Methods

showsPrec :: Int -> Pos -> ShowS #

show :: Pos -> String #

showList :: [Pos] -> ShowS #

Eq Pos # 
Instance details

Defined in Data.Loc

Methods

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

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

Ord Pos # 
Instance details

Defined in Data.Loc

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 #

Pretty Pos # 
Instance details

Defined in Text.PrettyPrint.Mainland.Class

Methods

ppr :: Pos -> Doc #

pprPrec :: Int -> Pos -> Doc #

pprList :: [Pos] -> Doc #

Located Pos # 
Instance details

Defined in Data.Loc

Methods

locOf :: Pos -> Loc #

locOfList :: [Pos] -> Loc #

data TermBinding Source #

Constructors

TermSize

The bound term is a size type

TermVar TermBindSrc StructType (Maybe TypeAscription)

Inferred Type, Ascripted type

TermFun TermFunData

The bound term is a function

Instances

Instances details
Show TermBinding Source # 
Instance details

Defined in Language.Futhark.Query

Eq TermBinding Source # 
Instance details

Defined in Language.Futhark.Query

data TermBindSrc Source #

Constructors

TermBindPat

Term was bound where a pattern is allowed

TermBindLet

Term was bound with a let

TermBindId

term was bound where only an identifier is allowed

TermBindNested

term was bound inside another pattern

Instances

Instances details
Show TermBindSrc Source # 
Instance details

Defined in Language.Futhark.Query

Eq TermBindSrc Source # 
Instance details

Defined in Language.Futhark.Query