Safe Haskell | None |
---|
Annotations
- data Annotation = Annotation {}
- data AnnTarget name
- = NamedTarget name
- | ModuleTarget Module
- type CoreAnnTarget = AnnTarget Name
- getAnnTargetName_maybe :: AnnTarget name -> Maybe name
- data AnnEnv
- mkAnnEnv :: [Annotation] -> AnnEnv
- extendAnnEnvList :: AnnEnv -> [Annotation] -> AnnEnv
- plusAnnEnv :: AnnEnv -> AnnEnv -> AnnEnv
- emptyAnnEnv :: AnnEnv
- findAnns :: Typeable a => ([Word8] -> a) -> AnnEnv -> CoreAnnTarget -> [a]
- deserializeAnns :: Typeable a => ([Word8] -> a) -> AnnEnv -> UniqFM [a]
Main Annotation data types
data Annotation
Represents an annotation after it has been sufficiently desugared from
it's initial form of AnnDecl
Constructors
Annotation | |
Fields
|
Instances
data AnnTarget name
An annotation target
Constructors
NamedTarget name | We are annotating something with a name: a type or identifier |
ModuleTarget Module | We are annotating a particular module |
type CoreAnnTarget = AnnTarget Name
The kind of annotation target found in the middle end of the compiler
getAnnTargetName_maybe :: AnnTarget name -> Maybe name
AnnEnv for collecting and querying Annotations
data AnnEnv
A collection of annotations
mkAnnEnv :: [Annotation] -> AnnEnv
extendAnnEnvList :: AnnEnv -> [Annotation] -> AnnEnv
plusAnnEnv :: AnnEnv -> AnnEnv -> AnnEnv
findAnns :: Typeable a => ([Word8] -> a) -> AnnEnv -> CoreAnnTarget -> [a]
Find the annotations attached to the given target as Typeable
values of your choice. If no deserializer is specified,
only transient annotations will be returned.
deserializeAnns :: Typeable a => ([Word8] -> a) -> AnnEnv -> UniqFM [a]
Deserialize all annotations of a given type. This happens lazily, that is no deserialization will take place until the [a] is actually demanded and the [a] can also be empty (the UniqFM is not filtered).