Class DefaultQualifierPolymorphism
java.lang.Object
org.checkerframework.framework.type.poly.AbstractQualifierPolymorphism
org.checkerframework.framework.type.poly.DefaultQualifierPolymorphism
- All Implemented Interfaces:
QualifierPolymorphism
Default implementation of
AbstractQualifierPolymorphism. The polymorphic qualifiers for a
checker that uses this class are found by searching all supported qualifiers. Instantiations of a
polymorphic qualifier are combined using lub.-
Field Summary
Fields inherited from class org.checkerframework.framework.type.poly.AbstractQualifierPolymorphism
atypeFactory, hasPolyScanner, polyInstantiationForQualifierParameter, polyQuals, qualHierarchy, topQuals -
Constructor Summary
ConstructorsConstructorDescriptionCreates aDefaultQualifierPolymorphisminstance that usesfactoryfor querying type qualifiers and for getting annotated types. -
Method Summary
Modifier and TypeMethodDescriptionprotected AnnotationMirrorcombine(AnnotationMirror polyQual, AnnotationMirror a1, AnnotationMirror a2) This implementation combines the two annotations using the least upper bound.protected voidreplace(AnnotatedTypeMirror type, AnnotationMirrorMap<AnnotationMirror> replacements) Replaces the top-level polymorphic annotations intypewith the instantiations inreplacements.Methods inherited from class org.checkerframework.framework.type.poly.AbstractQualifierPolymorphism
hasPolymorphicQualifiers, reset, resolve, resolve, resolve, resolve
-
Constructor Details
-
DefaultQualifierPolymorphism
Creates aDefaultQualifierPolymorphisminstance that usesfactoryfor querying type qualifiers and for getting annotated types.- Parameters:
env- the processing environmentfactory- the factory for the current checker
-
-
Method Details
-
replace
protected void replace(AnnotatedTypeMirror type, AnnotationMirrorMap<AnnotationMirror> replacements) Description copied from class:AbstractQualifierPolymorphismReplaces the top-level polymorphic annotations intypewith the instantiations inreplacements.This method is called on all parts of a type.
- Specified by:
replacein classAbstractQualifierPolymorphism- Parameters:
type- the AnnotatedTypeMirror whose poly annotations are replaced; it is side-effected by this methodreplacements- a mapping from polymorphic annotation to instantiation
-
combine
protected AnnotationMirror combine(AnnotationMirror polyQual, AnnotationMirror a1, AnnotationMirror a2) This implementation combines the two annotations using the least upper bound.Returns annotation that is the combination of the two annotations. The annotations are instantiations for
polyQual.The combination is typically their least upper bound. (It could be the GLB in the case that all arguments to a polymorphic method must have the same annotation.)
- Specified by:
combinein classAbstractQualifierPolymorphism- Parameters:
polyQual- polymorphic qualifier for whicha1anda2are instantiationsa1- an annotation that is an instantiation ofpolyQuala2- an annotation that is an instantiation ofpolyQual- Returns:
- an annotation that is the combination of the two annotations
-