checkers.fenum
Class FenumVisitor
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.fenum.FenumVisitor
- All Implemented Interfaces:
- TreeVisitor<Void,Void>
public class FenumVisitor
extends BaseTypeVisitor<Void,Void>
Method Summary
protected void |
checkArguments(List<? extends AnnotatedTypeMirror> requiredArgs,
List<? extends ExpressionTree> passedArgs,
Void p)
A helper method to check that each passed argument is a subtype of the
corresponding required argument, and issues "argument.invalid" error
for each passed argument that not a subtype of the required one. |
protected boolean |
checkMethodInvocability(AnnotatedTypeMirror.AnnotatedExecutableType method,
MethodInvocationTree node)
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. |
Void |
visitAssignment(AssignmentTree node,
Void p)
Performs two checks: subtyping and assignability checks, using
BaseTypeVisitor.commonAssignmentCheck(Tree, ExpressionTree, String, Object) . |
Void |
visitBinary(BinaryTree node,
Void p)
|
Void |
visitVariable(VariableTree node,
Void p)
|
Methods inherited from class checkers.basetype.BaseTypeVisitor |
checkAccess, checkArrayInitialization, checkAssignability, checkConstructorInvocation, checkDefaultConstructor, checkOverride, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheck, createTypeValidator, enclosingMemberSelect, enclosingStatement, isAccessAllowed, isVectorCopyInto, scan, shouldSkip, shouldSkip, typeCheckVectorCopyIntoArgument, validateTypeOf, visitAnnotation, visitClass, visitCompilationUnit, visitCompoundAssignment, visitEnhancedForLoop, visitIdentifier, visitInstanceOf, visitMethod, visitMethodInvocation, visitNewArray, visitNewClass, visitParameterizedType, visitReturn, visitTypeCast, visitUnary |
Methods inherited from class com.sun.source.util.TreeScanner |
reduce, scan, visitAnnotatedType, visitArrayAccess, visitArrayType, visitAssert, visitBlock, visitBreak, visitCase, visitCatch, visitConditionalExpression, visitContinue, visitDisjointType, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitForLoop, visitIf, visitImport, visitLabeledStatement, visitLiteral, visitMemberSelect, 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 |
FenumVisitor
public FenumVisitor(FenumChecker checker,
CompilationUnitTree root)
visitBinary
public Void visitBinary(BinaryTree node,
Void p)
- Specified by:
visitBinary
in interface TreeVisitor<Void,Void>
- Overrides:
visitBinary
in class TreeScanner<Void,Void>
visitVariable
public Void visitVariable(VariableTree node,
Void p)
- Specified by:
visitVariable
in interface TreeVisitor<Void,Void>
- Overrides:
visitVariable
in class BaseTypeVisitor<Void,Void>
visitAssignment
public Void visitAssignment(AssignmentTree node,
Void p)
- Description copied from class:
BaseTypeVisitor
- Performs two checks: subtyping and assignability checks, using
BaseTypeVisitor.commonAssignmentCheck(Tree, ExpressionTree, String, Object)
.
If the subtype check fails, it issues a "assignment.type.incompatible" error.
- Specified by:
visitAssignment
in interface TreeVisitor<Void,Void>
- Overrides:
visitAssignment
in class BaseTypeVisitor<Void,Void>
checkArguments
protected void checkArguments(List<? extends AnnotatedTypeMirror> requiredArgs,
List<? extends ExpressionTree> passedArgs,
Void p)
- Description copied from class:
BaseTypeVisitor
- A helper method to check that each passed argument is a subtype of the
corresponding required argument, and issues "argument.invalid" error
for each passed argument that not a subtype of the required one.
Note this method requires the lists to have the same length, as it
does not handle cases like var args.
- Overrides:
checkArguments
in class BaseTypeVisitor<Void,Void>
- Parameters:
requiredArgs
- the required typespassedArgs
- the expressions passed to the corresponding types
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