| Safe Haskell | None | 
|---|
Annotations
Description
Support for source code annotation feature of GHC. That is the ANN pragma.
(c) The University of Glasgow 2006 (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
- 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
Get the name of an annotation target if it exists.
AnnEnv for collecting and querying Annotations
data AnnEnv
A collection of annotations Can't use a type synonym or we hit bug #2412 due to source import
mkAnnEnv :: [Annotation] -> AnnEnv
Construct a new annotation environment that contains the list of annotations provided.
extendAnnEnvList :: AnnEnv -> [Annotation] -> AnnEnv
Add the given annotation to the environment.
plusAnnEnv :: AnnEnv -> AnnEnv -> AnnEnv
Union two annotation environments.
An empty annotation environment.
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).