Package org.checkerframework.afu.scenelib.el
package org.checkerframework.afu.scenelib.el
annotations.el
provides classes that associate annotations with Java elements. AElement
s represent Java elements of the scene that can
carry annotations. There is a multi-level class hierarchy for elements that exploits certain
commonalities: for example, all and only declarations
contain an insertTypecasts
field. A “scene” (AScene
) contains many elements and represents all the
annotations on a set of classes and packages.
One related utility class that is important to understand is VivifyingMap
, a Map implementation that allows empty
entries (for some user-defined meaning of empty
) and provides a prune
method to eliminate these
entries. The only way to create any element is to invoke getVivify()
on a
VivifyingMap
static member of the appropriate
AElement
superclass.
-
ClassDescriptionABlock has local variables in scope.An annotated class.A declaration, as opposed to an expression.An
AElement
represents a Java element and the annotations it carries.Manages all annotations within expressions, that is, annotations on typecasts, instanceofs, and object creations.A field or method formal parameter.An annotated method; contains bounds, return, parameters, receiver, and throws.An annotation type definition, consisting of the annotation name, its meta-annotations, and its field names and types.AnAScene
(annotated scene) represents the annotations on a set of Java classes and packages along with the definitions of some or all of the annotation types used.AnAElement
that represents a type might have annotations on inner types ("generic/array" annotations in the design document).AnATypeElement
that also stores an un-annotated type.ABoundLocation
holds location information for a bound of a type parameter of a class or method: parameter index and bound index.A DefCollector supplies a visitor for the annotation definitions in an AScene.Thrown byDefCollector
if the scene contains two different definitions of the same annotation type that cannot be unified.ElementVisitor<R,T> ALocalLocation
holds information about a local variable.ARelativeLocation
holds location information for a instanceof, cast, or new: either the bytecode offset or the source code index.ATypeASTMapper
traverses a client-maintained abstract syntax tree representing a type in parallel with anATypeElement
from the annotation scene library, indicating corresponding pairs of AST nodes andAElement
s to the client so the client can process them in some fashion.A TypePathEntry is a way to get from one node in aTypePath
to another.