Package org.checkerframework.afu.scenelib.el
package org.checkerframework.afu.scenelib.el
annotations.el provides classes that associate annotations with Java elements. AElements 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
AElementrepresents 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.AnAElementthat represents a type might have annotations on inner types ("generic/array" annotations in the design document).AnATypeElementthat also stores an un-annotated type.ABoundLocationholds 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 byDefCollectorif the scene contains two different definitions of the same annotation type that cannot be unified.ElementVisitor<R,T> ALocalLocationholds information about a local variable.ARelativeLocationholds location information for a instanceof, cast, or new: either the bytecode offset or the source code index.ATypeASTMappertraverses a client-maintained abstract syntax tree representing a type in parallel with anATypeElementfrom the annotation scene library, indicating corresponding pairs of AST nodes andAElements to the client so the client can process them in some fashion.A TypePathEntry is a way to get from one node in aTypePathto another.