public class BaseTypeValidator extends AnnotatedTypeScanner<Void,Tree> implements TypeValidator
| Modifier and Type | Field and Description |
|---|---|
protected AnnotatedTypeFactory |
atypeFactory |
protected BaseTypeChecker |
checker |
protected boolean |
isValid |
protected BaseTypeVisitor<?> |
visitor |
visitedNodes| Constructor and Description |
|---|
BaseTypeValidator(BaseTypeChecker checker,
BaseTypeVisitor<?> visitor,
AnnotatedTypeFactory atypeFactory) |
reduce, reset, scan, scan, scanAndReduce, scanAndReduce, visit, visit, visitExecutable, visitIntersection, visitNoType, visitNull, visitUnionprotected boolean isValid
protected final BaseTypeChecker checker
protected final BaseTypeVisitor<?> visitor
protected final AnnotatedTypeFactory atypeFactory
public BaseTypeValidator(BaseTypeChecker checker, BaseTypeVisitor<?> visitor, AnnotatedTypeFactory atypeFactory)
public boolean isValid(AnnotatedTypeMirror type, Tree tree)
BaseTypeVisitor.validateTypeOf(Tree).isValid in interface TypeValidatortype - the type to validatetree - the tree from which the type originated. If the tree is a method tree, validate
its return type. If the tree is a variable tree, validate its field type.protected Result isValidType(QualifierHierarchy qualifierHierarchy, AnnotatedTypeMirror type)
AnnotatedTypeMirror passed a set of well-formedness checks.
The method will never return false for valid types, but might not catch all invalid types.
Currently, the following is checked:
protected Result isTopLevelValidType(QualifierHierarchy qualifierHierarchy, AnnotatedTypeMirror type)
isValidType(org.checkerframework.framework.type.QualifierHierarchy, org.checkerframework.framework.type.AnnotatedTypeMirror), but only for the top level type.protected void reportValidityResult(@CompilerMessageKey String errorType, AnnotatedTypeMirror type, Tree p)
protected void reportValidityResultOnUnannotatedType(@CompilerMessageKey String errorType, AnnotatedTypeMirror type, Tree p)
reportValidityResult(java.lang.String, org.checkerframework.framework.type.AnnotatedTypeMirror, com.sun.source.tree.Tree), but the type is printed in the error message without
annotations. This method would print "annotation @NonNull is not permitted on type int",
whereas reportValidityResult(java.lang.String, org.checkerframework.framework.type.AnnotatedTypeMirror, com.sun.source.tree.Tree) would print "annotation @NonNull is not permitted on
type @NonNull int".protected void reportInvalidBounds(AnnotatedTypeMirror type, Tree tree)
protected void reportInvalidType(AnnotatedTypeMirror type, Tree p)
protected void reportInvalidAnnotationsOnUse(AnnotatedTypeMirror type, Tree p)
public Void visitDeclared(AnnotatedTypeMirror.AnnotatedDeclaredType type, Tree tree)
AnnotatedTypeVisitorvisitDeclared in interface AnnotatedTypeVisitor<Void,Tree>visitDeclared in class AnnotatedTypeScanner<Void,Tree>type - the type to visittree - a visitor-specified parameterpublic Void visitPrimitive(AnnotatedTypeMirror.AnnotatedPrimitiveType type, Tree tree)
AnnotatedTypeVisitorvisitPrimitive in interface AnnotatedTypeVisitor<Void,Tree>visitPrimitive in class AnnotatedTypeScanner<Void,Tree>type - the type to visittree - a visitor-specified parameterpublic Void visitArray(AnnotatedTypeMirror.AnnotatedArrayType type, Tree tree)
AnnotatedTypeVisitorvisitArray in interface AnnotatedTypeVisitor<Void,Tree>visitArray in class AnnotatedTypeScanner<Void,Tree>type - the type to visittree - a visitor-specified parameterprotected Void visitParameterizedType(AnnotatedTypeMirror.AnnotatedDeclaredType type, ParameterizedTypeTree tree)
This method used to be visitParameterizedType, which incorrectly handles the main annotation on generic types.
public Void visitTypeVariable(AnnotatedTypeMirror.AnnotatedTypeVariable type, Tree tree)
AnnotatedTypeVisitorvisitTypeVariable in interface AnnotatedTypeVisitor<Void,Tree>visitTypeVariable in class AnnotatedTypeScanner<Void,Tree>type - the type to visittree - a visitor-specified parameterpublic Void visitWildcard(AnnotatedTypeMirror.AnnotatedWildcardType type, Tree tree)
AnnotatedTypeVisitorvisitWildcard in interface AnnotatedTypeVisitor<Void,Tree>visitWildcard in class AnnotatedTypeScanner<Void,Tree>type - the type to visittree - a visitor-specified parameterpublic boolean areBoundsValid(AnnotatedTypeMirror upperBound, AnnotatedTypeMirror lowerBound)