checkers.nonnull
Class NonNullVisitor
java.lang.Object
com.sun.source.util.TreeScanner<R,P>
com.sun.source.util.TreePathScanner<R,P>
checkers.source.SourceVisitor<R,P>
checkers.basetype.BaseTypeVisitor<Void,Void>
checkers.nonnull.NonNullVisitor
- All Implemented Interfaces:
- TreeVisitor<Void,Void>
public class NonNullVisitor
- extends BaseTypeVisitor<Void,Void>
A type-checking visitor for the NonNull
type
qualifier. This visitor reports errors or warnings for violations for
the following cases:
1. if the receiver of a member dereference is not NonNull (error
"dereference.of.nullable")
2. if the receiver of an implicit ".iterator()" dereference in an enhanced
for loop is not NonNull (error "dereference.of.nullable")
Self-accesses (via this
or super
) can always be dereferenced.
Methods inherited from class checkers.basetype.BaseTypeVisitor |
checkArguments, checkAssignability, checkOverride, checkTypeArguments, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheck, scan, shouldSkip, shouldSkip, validateTypeOf, visitAnnotation, visitAssignment, visitClass, visitCompilationUnit, visitCompoundAssignment, visitInstanceOf, visitMethod, visitMethodInvocation, visitNewArray, visitNewClass, visitParameterizedType, visitReturn, visitTypeCast, visitUnary, visitVariable |
Methods inherited from class com.sun.source.util.TreeScanner |
reduce, scan, visitAnnotatedType, visitArrayAccess, visitArrayType, visitAssert, visitBinary, visitBlock, visitBreak, visitCase, visitCatch, visitConditionalExpression, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitLabeledStatement, visitLiteral, visitModifiers, visitOther, visitParenthesized, visitPrimitiveType, visitSwitch, visitSynchronized, visitThrow, visitTry, visitTypeParameter, visitWhileLoop, visitWildcard |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NonNullVisitor
public NonNullVisitor(NonNullChecker checker,
CompilationUnitTree root)
- Creates a new visitor for type-checking
NonNull
.
- Parameters:
checker
- the checker to useroot
- the root of the input program's AST to check
visitMemberSelect
public Void visitMemberSelect(MemberSelectTree node,
Void p)
- Specified by:
visitMemberSelect
in interface TreeVisitor<Void,Void>
- Overrides:
visitMemberSelect
in class TreeScanner<Void,Void>
visitEnhancedForLoop
public Void visitEnhancedForLoop(EnhancedForLoopTree node,
Void p)
- Description copied from class:
BaseTypeVisitor
- Performs a subtype check, to test whether the node expression
iterable type is a subtype of the variable type in the enhanced for
loop.
If the subtype check fails, it issues a "type.incompatible" error.
- Specified by:
visitEnhancedForLoop
in interface TreeVisitor<Void,Void>
- Overrides:
visitEnhancedForLoop
in class BaseTypeVisitor<Void,Void>
checkMethodInvocability
protected boolean checkMethodInvocability(AnnotatedTypeMirror.AnnotatedExecutableType method,
MethodInvocationTree node)
- Description copied from class:
BaseTypeVisitor
- Tests whether the method can be invoked using the receiver of the 'node'
method invocation, and issues a "method.invocation.invalid" if the
invocation is invalid.
This implementation tests whether the receiver in the method invocation
is a subtype of the method receiver type.
- Overrides:
checkMethodInvocability
in class BaseTypeVisitor<Void,Void>
- Parameters:
method
- the type of the invoked methodnode
- the method invocation node
- Returns:
- true iff the call of 'node' is a valid call