Class DefaultQualifierPolymorphism
- java.lang.Object
-
- org.checkerframework.framework.type.poly.AbstractQualifierPolymorphism
-
- org.checkerframework.framework.type.poly.DefaultQualifierPolymorphism
-
- All Implemented Interfaces:
QualifierPolymorphism
public class DefaultQualifierPolymorphism extends AbstractQualifierPolymorphism
Default implementation ofAbstractQualifierPolymorphism
. 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, polyInstantiationForQualifierParameter, polyQuals, polyScanner, qualHierarchy, topQuals
-
-
Constructor Summary
Constructors Constructor Description DefaultQualifierPolymorphism(javax.annotation.processing.ProcessingEnvironment env, AnnotatedTypeFactory factory)
Creates aDefaultQualifierPolymorphism
instance that usesfactory
for querying type qualifiers and for getting annotated types.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javax.lang.model.element.AnnotationMirror
combine(javax.lang.model.element.AnnotationMirror polyQual, javax.lang.model.element.AnnotationMirror a1, javax.lang.model.element.AnnotationMirror a2)
This implementation combines the two annotations using the least upper bound.protected void
replace(AnnotatedTypeMirror type, AnnotationMirrorMap<javax.lang.model.element.AnnotationMirror> replacements)
Replaces the top-level polymorphic annotations intype
with the instantiations inreplacements
.-
Methods inherited from class org.checkerframework.framework.type.poly.AbstractQualifierPolymorphism
hasPolymorphicQualifiers, reset, resolve, resolve, resolve, resolve
-
-
-
-
Constructor Detail
-
DefaultQualifierPolymorphism
public DefaultQualifierPolymorphism(javax.annotation.processing.ProcessingEnvironment env, AnnotatedTypeFactory factory)
Creates aDefaultQualifierPolymorphism
instance that usesfactory
for querying type qualifiers and for getting annotated types.- Parameters:
env
- the processing environmentfactory
- the factory for the current checker
-
-
Method Detail
-
replace
protected void replace(AnnotatedTypeMirror type, AnnotationMirrorMap<javax.lang.model.element.AnnotationMirror> replacements)
Description copied from class:AbstractQualifierPolymorphism
Replaces the top-level polymorphic annotations intype
with the instantiations inreplacements
.This method is called on all parts of a type.
- Specified by:
replace
in 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 javax.lang.model.element.AnnotationMirror combine(javax.lang.model.element.AnnotationMirror polyQual, javax.lang.model.element.AnnotationMirror a1, javax.lang.model.element.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:
combine
in classAbstractQualifierPolymorphism
- Parameters:
polyQual
- polymorphic qualifier for whicha1
anda2
are instantiationsa1
- an annotation that is an instantiation ofpolyQual
a2
- an annotation that is an instantiation ofpolyQual
- Returns:
- an annotation that is the combination of the two annotations
-
-