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.

  • Class
    Description
    ABlock 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.
    An AScene (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.
    An AElement that represents a type might have annotations on inner types ("generic/array" annotations in the design document).
    An ATypeElement that also stores an un-annotated type.
    A BoundLocation 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 by DefCollector if the scene contains two different definitions of the same annotation type that cannot be unified.
     
    A LocalLocation holds information about a local variable.
    A RelativeLocation holds location information for a instanceof, cast, or new: either the bytecode offset or the source code index.
    A TypeASTMapper traverses a client-maintained abstract syntax tree representing a type in parallel with an ATypeElement from the annotation scene library, indicating corresponding pairs of AST nodes and AElements to the client so the client can process them in some fashion.
     
    A TypePathEntry is a way to get from one node in a TypePath to another.