Class AnnotatedTypeMirror.AnnotatedDeclaredType
java.lang.Object
org.checkerframework.framework.type.AnnotatedTypeMirror
org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType
- All Implemented Interfaces:
org.plumelib.util.DeepCopyable<AnnotatedTypeMirror>
- Enclosing class:
AnnotatedTypeMirror
Represents a declared type (whether class or interface).
-
Nested Class Summary
Nested classes/interfaces inherited from class org.checkerframework.framework.type.AnnotatedTypeMirror
AnnotatedTypeMirror.AnnotatedArrayType, AnnotatedTypeMirror.AnnotatedDeclaredType, AnnotatedTypeMirror.AnnotatedExecutableType, AnnotatedTypeMirror.AnnotatedIntersectionType, AnnotatedTypeMirror.AnnotatedNoType, AnnotatedTypeMirror.AnnotatedNullType, AnnotatedTypeMirror.AnnotatedPrimitiveType, AnnotatedTypeMirror.AnnotatedTypeVariable, AnnotatedTypeMirror.AnnotatedUnionType, AnnotatedTypeMirror.AnnotatedWildcardType -
Field Summary
FieldsModifier and TypeFieldDescriptionThe enclosing type.protected @MonotonicNonNull List<AnnotatedTypeMirror> Parametrized Type Arguments.Fields inherited from class org.checkerframework.framework.type.AnnotatedTypeMirror
atypeFactory, EQUALITY_COMPARER, HASHCODE_VISITOR, primaryAnnotations, underlyingType -
Method Summary
Modifier and TypeMethodDescription<R,P> R accept(AnnotatedTypeVisitor<R, P> v, P p) Applies a visitor to this type.asUse()deepCopy()Returns a deep copy of this type with annotations.deepCopy(boolean copyAnnotations) Returns a deep copy of this type.This method returns a list of AnnotatedTypeMirrors where the Java type of each ATM is an immediate supertype (class or interface) of the Java type of this.Returns the enclosing type, as in the type ofAin the typeA.B.Return the declared type with its type arguments removed.static AnnotationMirrorSetgetPrimaryAnnotationsFromElement(Element e, DeclaredType declaredType, AnnotatedTypeFactory annotatedTypeFactory) Returns all the primary annotations, even those that are not qualifiers in this type system, one.Returns the type arguments for this type.Returns the underlying unannotated Java type, which this wraps.booleanReturns true if this type mirror represents a declaration, rather than a use, of a type.booleanReturns true if the underlying type is raw.voidsetEnclosingType(@Nullable AnnotatedTypeMirror.AnnotatedDeclaredType enclosingType) Sets the enclosing type.protected voidSet the isUnderlyingTypeRaw flag to true.voidsetTypeArguments(List<? extends AnnotatedTypeMirror> ts) Sets the type arguments on this type.Returns a shallow copy of this type with annotations.shallowCopy(boolean copyAnnotations) Returns a shallow copy of this type.Methods inherited from class org.checkerframework.framework.type.AnnotatedTypeMirror
addAnnotation, addAnnotation, addAnnotations, addMissingAnnotation, addMissingAnnotations, clearAnnotations, clearPrimaryAnnotations, containsCapturedTypes, createType, createTypeOfObject, createTypeOfRecord, equals, getAnnotation, getAnnotation, getAnnotation, getAnnotationInHierarchy, getAnnotations, getAnnotationsField, getEffectiveAnnotation, getEffectiveAnnotation, getEffectiveAnnotationInHierarchy, getEffectiveAnnotations, getExplicitAnnotations, getKind, getPrimaryAnnotation, getPrimaryAnnotation, getPrimaryAnnotation, getPrimaryAnnotationInHierarchy, getPrimaryAnnotations, getPrimaryAnnotationsField, getPrimitiveKind, getUnderlyingTypeHashCode, hasAnnotation, hasAnnotation, hasAnnotationInHierarchy, hasAnnotationRelaxed, hasEffectiveAnnotation, hasEffectiveAnnotation, hasEffectiveAnnotationRelaxed, hasExplicitAnnotation, hasExplicitAnnotation, hasExplicitAnnotationRelaxed, hashCode, hasPrimaryAnnotation, hasPrimaryAnnotation, hasPrimaryAnnotationInHierarchy, hasPrimaryAnnotationRelaxed, isAnnotatedInHierarchy, removeAnnotation, removeAnnotationByClass, removeAnnotationInHierarchy, removeNonTopAnnotationInHierarchy, removePrimaryAnnotation, removePrimaryAnnotationByClass, removePrimaryAnnotationInHierarchy, removePrimaryAnnotations, replaceAnnotation, replaceAnnotations, toString, toString
-
Field Details
-
typeArgs
Parametrized Type Arguments. -
enclosingType
The enclosing type. May be null. May be changed.
-
-
Method Details
-
isDeclaration
public boolean isDeclaration()Description copied from class:AnnotatedTypeMirrorReturns true if this type mirror represents a declaration, rather than a use, of a type.For example,
class List<T> { ... }declares a new typeList<T>, whileList<Integer>is a use of the type.- Overrides:
isDeclarationin classAnnotatedTypeMirror- Returns:
- true if this represents a declaration
-
deepCopy
Description copied from class:AnnotatedTypeMirrorReturns a deep copy of this type. A deep copy implies that each component type is copied recursively and the returned type refers to those copies in its component locations.Note: deepCopy provides two important properties in the returned copy:
- Structure preservation -- The exact structure of the original AnnotatedTypeMirror is preserved in the copy including all component types.
- Annotation preservation -- All of the annotations from the original AnnotatedTypeMirror and its components have been copied to the new type.
- Specified by:
deepCopyin classAnnotatedTypeMirror- Returns:
- a deep copy
-
deepCopy
Description copied from class:AnnotatedTypeMirrorReturns a deep copy of this type with annotations.Each subclass implements this method with the subclass return type. The method body must always be a call to deepCopy(true).
- Specified by:
deepCopyin interfaceorg.plumelib.util.DeepCopyable<AnnotatedTypeMirror>- Specified by:
deepCopyin classAnnotatedTypeMirror- Returns:
- a deep copy of this type with annotations
- See Also:
-
asUse
- Overrides:
asUsein classAnnotatedTypeMirror
-
accept
Description copied from class:AnnotatedTypeMirrorApplies a visitor to this type.- Specified by:
acceptin classAnnotatedTypeMirror- Type Parameters:
R- the return type of the visitor's methodsP- the type of the additional parameter to the visitor's methods- Parameters:
v- the visitor operating on this typep- additional parameter to the visitor- Returns:
- a visitor-specified result
-
setTypeArguments
Sets the type arguments on this type.- Parameters:
ts- a list of type arguments to be captured by this method
-
getTypeArguments
Returns the type arguments for this type.- Returns:
- the type arguments for this type
-
isUnderlyingTypeRaw
public boolean isUnderlyingTypeRaw()Returns true if the underlying type is raw. The receiver of this method is not raw, however; its annotated type arguments have been inferred.- Returns:
- true iff the type was raw
-
setIsUnderlyingTypeRaw
protected void setIsUnderlyingTypeRaw()Set the isUnderlyingTypeRaw flag to true. This should only be necessary when determining the supertypes of a raw type. -
getUnderlyingType
Description copied from class:AnnotatedTypeMirrorReturns the underlying unannotated Java type, which this wraps.- Overrides:
getUnderlyingTypein classAnnotatedTypeMirror- Returns:
- the underlying type
-
directSupertypes
Description copied from class:AnnotatedTypeMirrorThis method returns a list of AnnotatedTypeMirrors where the Java type of each ATM is an immediate supertype (class or interface) of the Java type of this. The interface types, if any, appear at the end of the list. If the directSuperType has type arguments, then the annotations on those type arguments are taken with proper translation from the declaration of the Java type of this.For example,
The direct supertype of the ATMclass B<T> { ... }class A extends B<@NonNull String> { ... }@Nullable A a;@Nullable Ais@Nullable B<@NonNull String>.An example with more complex type arguments:
The direct supertype of the ATMclass D<Q,R> { ... }class A<T,S> extends D<S,T> { ... }@Nullable A<@NonNull String, @NonNull Object> a;@Nullable A<@NonNull String, @NonNull Object>is@Nullable B<@NonNull Object, @NonNull String>.An example with more than one direct supertype:
The direct supertypes of the ATMclass B<T> implements List<Integer> { ... }class A extends B<@NonNull String> implements List<Integer> { ... }@Nullable A a;@Nullable Aare@Nullable B <@NonNull String>and@Nullable List<@NonNull Integer>.- Overrides:
directSupertypesin classAnnotatedTypeMirror- Returns:
- the immediate supertypes of this
- See Also:
-
shallowCopy
Description copied from class:AnnotatedTypeMirrorReturns a shallow copy of this type with annotations.Each subclass implements this method with the subclass return type. The method body must always be a call to shallowCopy(true).
- Specified by:
shallowCopyin classAnnotatedTypeMirror- Returns:
- a shallow copy of this type with annotations
- See Also:
-
shallowCopy
Description copied from class:AnnotatedTypeMirrorReturns a shallow copy of this type. A shallow copy implies that each component type in the output copy refers to the same object as the object being copied.- Specified by:
shallowCopyin classAnnotatedTypeMirror- Parameters:
copyAnnotations- whether copy should have annotations, i.e. whether fieldannotationsshould be copied.
-
getErased
Return the declared type with its type arguments removed. This also replaces the underlying type with its erasure.- Overrides:
getErasedin classAnnotatedTypeMirror- Returns:
- a fresh copy of the declared type with no type arguments
- See Also:
-
setEnclosingType
Sets the enclosing type.- Parameters:
enclosingType- the new enclosing type
-
getEnclosingType
Returns the enclosing type, as in the type ofAin the typeA.B. May return null.- Returns:
- enclosingType the enclosing type, or null if this is a top-level type
-
getPrimaryAnnotationsFromElement
public static AnnotationMirrorSet getPrimaryAnnotationsFromElement(Element e, DeclaredType declaredType, AnnotatedTypeFactory annotatedTypeFactory) Returns all the primary annotations, even those that are not qualifiers in this type system, one.- Parameters:
e- an elementdeclaredType- the type of the elementannotatedTypeFactory- a type factory- Returns:
- all the primary annotations, even those that are not qualifiers in this type system,
on
e
-