stan-0.2.0.0: Haskell STatic ANalyser
Safe HaskellNone
LanguageHaskell2010

Stan.Hie.Compat

Synopsis

Documentation

data HieAST a #

Constructors

Node 

Instances

Instances details
Functor HieAST 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Foldable HieAST 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieAST m -> m #

foldMap :: Monoid m => (a -> m) -> HieAST a -> m #

foldMap' :: Monoid m => (a -> m) -> HieAST a -> m #

foldr :: (a -> b -> b) -> b -> HieAST a -> b #

foldr' :: (a -> b -> b) -> b -> HieAST a -> b #

foldl :: (b -> a -> b) -> b -> HieAST a -> b #

foldl' :: (b -> a -> b) -> b -> HieAST a -> b #

foldr1 :: (a -> a -> a) -> HieAST a -> a #

foldl1 :: (a -> a -> a) -> HieAST a -> a #

toList :: HieAST a -> [a] #

null :: HieAST a -> Bool #

length :: HieAST a -> Int #

elem :: Eq a => a -> HieAST a -> Bool #

maximum :: Ord a => HieAST a -> a #

minimum :: Ord a => HieAST a -> a #

sum :: Num a => HieAST a -> a #

product :: Num a => HieAST a -> a #

Traversable HieAST 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> HieAST a -> f (HieAST b) #

sequenceA :: Applicative f => HieAST (f a) -> f (HieAST a) #

mapM :: Monad m => (a -> m b) -> HieAST a -> m (HieAST b) #

sequence :: Monad m => HieAST (m a) -> m (HieAST a) #

Binary (HieAST TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Outputable a => Outputable (HieAST a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

ppr :: HieAST a -> SDoc #

Show a => Show (HieAST a) # 
Instance details

Defined in Stan.Hie.Debug908

Methods

showsPrec :: Int -> HieAST a -> ShowS #

show :: HieAST a -> String #

showList :: [HieAST a] -> ShowS #

data IEType #

Types of imports and exports

Instances

Instances details
Binary IEType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

put_ :: BinHandle -> IEType -> IO () #

put :: BinHandle -> IEType -> IO (Bin IEType) #

get :: BinHandle -> IO IEType #

Outputable IEType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

ppr :: IEType -> SDoc #

Enum IEType 
Instance details

Defined in GHC.Iface.Ext.Types

Show IEType # 
Instance details

Defined in Stan.Hie.Debug908

Eq IEType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Ord IEType 
Instance details

Defined in GHC.Iface.Ext.Types

newtype DeclType #

Constructors

DeclType DeclType 

Instances

Instances details
Show DeclType # 
Instance details

Defined in Stan.Hie.Compat904

Eq DeclType # 
Instance details

Defined in Stan.Hie.Compat904

data ContextInfo #

Different contexts under which identifiers exist

Constructors

Use

regular variable

MatchBind 
IEThing IEType

import/export

TyDecl 
ValBind

Value binding

Fields

  • BindType

    whether or not the binding is in an instance

  • Scope

    scope over which the value is bound

  • (Maybe Span)

    span of entire binding

PatternBind

Pattern binding

This case is tricky because the bound identifier can be used in two distinct scopes. Consider the following example (with -XViewPatterns)

do (b, a, (a -> True)) <- bar
   foo a

The identifier a has two scopes: in the view pattern (a -> True) and in the rest of the do-block in foo a.

Fields

  • Scope

    scope in the pattern (the variable bound can be used further in the pattern)

  • Scope

    rest of the scope outside the pattern

  • (Maybe Span)

    span of entire binding

ClassTyDecl (Maybe Span) 
Decl

Declaration

Fields

TyVarBind Scope TyVarScope

Type variable

RecField RecFieldContext (Maybe Span)

Record field

EvidenceVarBind

Constraint/Dictionary evidence variable binding

Fields

EvidenceVarUse

Usage of evidence variable

data IdentifierDetails a #

Information associated with every identifier

We need to include types with identifiers because sometimes multiple identifiers occur in the same span(Overloaded Record Fields and so on)

Instances

Instances details
Functor IdentifierDetails 
Instance details

Defined in GHC.Iface.Ext.Types

Foldable IdentifierDetails 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => IdentifierDetails m -> m #

foldMap :: Monoid m => (a -> m) -> IdentifierDetails a -> m #

foldMap' :: Monoid m => (a -> m) -> IdentifierDetails a -> m #

foldr :: (a -> b -> b) -> b -> IdentifierDetails a -> b #

foldr' :: (a -> b -> b) -> b -> IdentifierDetails a -> b #

foldl :: (b -> a -> b) -> b -> IdentifierDetails a -> b #

foldl' :: (b -> a -> b) -> b -> IdentifierDetails a -> b #

foldr1 :: (a -> a -> a) -> IdentifierDetails a -> a #

foldl1 :: (a -> a -> a) -> IdentifierDetails a -> a #

toList :: IdentifierDetails a -> [a] #

null :: IdentifierDetails a -> Bool #

length :: IdentifierDetails a -> Int #

elem :: Eq a => a -> IdentifierDetails a -> Bool #

maximum :: Ord a => IdentifierDetails a -> a #

minimum :: Ord a => IdentifierDetails a -> a #

sum :: Num a => IdentifierDetails a -> a #

product :: Num a => IdentifierDetails a -> a #

Traversable IdentifierDetails 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> IdentifierDetails a -> f (IdentifierDetails b) #

sequenceA :: Applicative f => IdentifierDetails (f a) -> f (IdentifierDetails a) #

mapM :: Monad m => (a -> m b) -> IdentifierDetails a -> m (IdentifierDetails b) #

sequence :: Monad m => IdentifierDetails (m a) -> m (IdentifierDetails a) #

Binary (IdentifierDetails TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Outputable a => Outputable (IdentifierDetails a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

ppr :: IdentifierDetails a -> SDoc #

Monoid (IdentifierDetails a) 
Instance details

Defined in GHC.Iface.Ext.Types

Semigroup (IdentifierDetails a) 
Instance details

Defined in GHC.Iface.Ext.Types

Show a => Show (IdentifierDetails a) # 
Instance details

Defined in Stan.Hie.Debug908

Eq a => Eq (IdentifierDetails a) 
Instance details

Defined in GHC.Iface.Ext.Types

data NodeInfo a #

The information stored in one AST node.

The type parameter exists to provide flexibility in representation of types (see Note [Efficient serialization of redundant type info]).

Constructors

NodeInfo 

Fields

Instances

Instances details
Functor NodeInfo 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Foldable NodeInfo 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => NodeInfo m -> m #

foldMap :: Monoid m => (a -> m) -> NodeInfo a -> m #

foldMap' :: Monoid m => (a -> m) -> NodeInfo a -> m #

foldr :: (a -> b -> b) -> b -> NodeInfo a -> b #

foldr' :: (a -> b -> b) -> b -> NodeInfo a -> b #

foldl :: (b -> a -> b) -> b -> NodeInfo a -> b #

foldl' :: (b -> a -> b) -> b -> NodeInfo a -> b #

foldr1 :: (a -> a -> a) -> NodeInfo a -> a #

foldl1 :: (a -> a -> a) -> NodeInfo a -> a #

toList :: NodeInfo a -> [a] #

null :: NodeInfo a -> Bool #

length :: NodeInfo a -> Int #

elem :: Eq a => a -> NodeInfo a -> Bool #

maximum :: Ord a => NodeInfo a -> a #

minimum :: Ord a => NodeInfo a -> a #

sum :: Num a => NodeInfo a -> a #

product :: Num a => NodeInfo a -> a #

Traversable NodeInfo 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> NodeInfo a -> f (NodeInfo b) #

sequenceA :: Applicative f => NodeInfo (f a) -> f (NodeInfo a) #

mapM :: Monad m => (a -> m b) -> NodeInfo a -> m (NodeInfo b) #

sequence :: Monad m => NodeInfo (m a) -> m (NodeInfo a) #

Binary (NodeInfo TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Outputable a => Outputable (NodeInfo a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

ppr :: NodeInfo a -> SDoc #

Show a => Show (NodeInfo a) # 
Instance details

Defined in Stan.Hie.Debug908

Methods

showsPrec :: Int -> NodeInfo a -> ShowS #

show :: NodeInfo a -> String #

showList :: [NodeInfo a] -> ShowS #

newtype HieASTs a #

Mapping from filepaths to the corresponding AST

Constructors

HieASTs 

Fields

Instances

Instances details
Functor HieASTs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Foldable HieASTs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieASTs m -> m #

foldMap :: Monoid m => (a -> m) -> HieASTs a -> m #

foldMap' :: Monoid m => (a -> m) -> HieASTs a -> m #

foldr :: (a -> b -> b) -> b -> HieASTs a -> b #

foldr' :: (a -> b -> b) -> b -> HieASTs a -> b #

foldl :: (b -> a -> b) -> b -> HieASTs a -> b #

foldl' :: (b -> a -> b) -> b -> HieASTs a -> b #

foldr1 :: (a -> a -> a) -> HieASTs a -> a #

foldl1 :: (a -> a -> a) -> HieASTs a -> a #

toList :: HieASTs a -> [a] #

null :: HieASTs a -> Bool #

length :: HieASTs a -> Int #

elem :: Eq a => a -> HieASTs a -> Bool #

maximum :: Ord a => HieASTs a -> a #

minimum :: Ord a => HieASTs a -> a #

sum :: Num a => HieASTs a -> a #

product :: Num a => HieASTs a -> a #

Traversable HieASTs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> HieASTs a -> f (HieASTs b) #

sequenceA :: Applicative f => HieASTs (f a) -> f (HieASTs a) #

mapM :: Monad m => (a -> m b) -> HieASTs a -> m (HieASTs b) #

sequence :: Monad m => HieASTs (m a) -> m (HieASTs a) #

Binary (HieASTs TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Outputable a => Outputable (HieASTs a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

ppr :: HieASTs a -> SDoc #

Show a => Show (HieASTs a) # 
Instance details

Defined in Stan.Hie.Debug908

Methods

showsPrec :: Int -> HieASTs a -> ShowS #

show :: HieASTs a -> String #

showList :: [HieASTs a] -> ShowS #

newtype HieArgs a #

A list of type arguments along with their respective visibilities (ie. is this an argument that would return True for isVisibleForAllTyFlag?).

Constructors

HieArgs [(Bool, a)] 

Instances

Instances details
Functor HieArgs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Foldable HieArgs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieArgs m -> m #

foldMap :: Monoid m => (a -> m) -> HieArgs a -> m #

foldMap' :: Monoid m => (a -> m) -> HieArgs a -> m #

foldr :: (a -> b -> b) -> b -> HieArgs a -> b #

foldr' :: (a -> b -> b) -> b -> HieArgs a -> b #

foldl :: (b -> a -> b) -> b -> HieArgs a -> b #

foldl' :: (b -> a -> b) -> b -> HieArgs a -> b #

foldr1 :: (a -> a -> a) -> HieArgs a -> a #

foldl1 :: (a -> a -> a) -> HieArgs a -> a #

toList :: HieArgs a -> [a] #

null :: HieArgs a -> Bool #

length :: HieArgs a -> Int #

elem :: Eq a => a -> HieArgs a -> Bool #

maximum :: Ord a => HieArgs a -> a #

minimum :: Ord a => HieArgs a -> a #

sum :: Num a => HieArgs a -> a #

product :: Num a => HieArgs a -> a #

Traversable HieArgs 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> HieArgs a -> f (HieArgs b) #

sequenceA :: Applicative f => HieArgs (f a) -> f (HieArgs a) #

mapM :: Monad m => (a -> m b) -> HieArgs a -> m (HieArgs b) #

sequence :: Monad m => HieArgs (m a) -> m (HieArgs a) #

Binary (HieArgs TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Show a => Show (HieArgs a) # 
Instance details

Defined in Stan.Hie.Debug908

Methods

showsPrec :: Int -> HieArgs a -> ShowS #

show :: HieArgs a -> String #

showList :: [HieArgs a] -> ShowS #

Eq a => Eq (HieArgs a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

(==) :: HieArgs a -> HieArgs a -> Bool #

(/=) :: HieArgs a -> HieArgs a -> Bool #

data HieType a #

A flattened version of Type.

See Note [Efficient serialization of redundant type info]

Constructors

HTyVarTy Name 
HAppTy a (HieArgs a) 
HTyConApp IfaceTyCon (HieArgs a) 
HForAllTy ((Name, a), ForAllTyFlag) a 
HFunTy a a a 
HQualTy a a

type with constraint: t1 => t2 (see IfaceDFunTy)

HLitTy IfaceTyLit 
HCastTy a 
HCoercionTy 

Instances

Instances details
Functor HieType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

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

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

Foldable HieType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

fold :: Monoid m => HieType m -> m #

foldMap :: Monoid m => (a -> m) -> HieType a -> m #

foldMap' :: Monoid m => (a -> m) -> HieType a -> m #

foldr :: (a -> b -> b) -> b -> HieType a -> b #

foldr' :: (a -> b -> b) -> b -> HieType a -> b #

foldl :: (b -> a -> b) -> b -> HieType a -> b #

foldl' :: (b -> a -> b) -> b -> HieType a -> b #

foldr1 :: (a -> a -> a) -> HieType a -> a #

foldl1 :: (a -> a -> a) -> HieType a -> a #

toList :: HieType a -> [a] #

null :: HieType a -> Bool #

length :: HieType a -> Int #

elem :: Eq a => a -> HieType a -> Bool #

maximum :: Ord a => HieType a -> a #

minimum :: Ord a => HieType a -> a #

sum :: Num a => HieType a -> a #

product :: Num a => HieType a -> a #

Traversable HieType 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

traverse :: Applicative f => (a -> f b) -> HieType a -> f (HieType b) #

sequenceA :: Applicative f => HieType (f a) -> f (HieType a) #

mapM :: Monad m => (a -> m b) -> HieType a -> m (HieType b) #

sequence :: Monad m => HieType (m a) -> m (HieType a) #

Binary (HieType TypeIndex) 
Instance details

Defined in GHC.Iface.Ext.Types

Show a => Show (HieType a) # 
Instance details

Defined in Stan.Hie.Debug908

Methods

showsPrec :: Int -> HieType a -> ShowS #

show :: HieType a -> String #

showList :: [HieType a] -> ShowS #

Eq a => Eq (HieType a) 
Instance details

Defined in GHC.Iface.Ext.Types

Methods

(==) :: HieType a -> HieType a -> Bool #

(/=) :: HieType a -> HieType a -> Bool #

type TypeIndex = Int #

data HieFile #

GHC builds up a wealth of information about Haskell source as it compiles it. .hie files are a way of persisting some of this information to disk so that external tools that need to work with haskell source don't need to parse, typecheck, and rename all over again. These files contain:

  • a simplified AST

    • nodes are annotated with source positions and types
    • identifiers are annotated with scope information
  • the raw bytes of the initial Haskell source

Besides saving compilation cycles, .hie files also offer a more stable interface than the GHC API.

Constructors

HieFile 

Fields

Instances

Instances details
Binary HieFile 
Instance details

Defined in GHC.Iface.Ext.Types

Show HieFile # 
Instance details

Defined in Stan.Hie.Debug908

nodeInfo :: Ord a => HieAST a -> NodeInfo a #

hFunTy2 :: HieType b -> Maybe (b, b) #