Class InstanceOfScanner
java.lang.Object
com.sun.source.util.TreeScanner<Void,Void>
com.sun.source.util.TreePathScanner<Void,Void>
org.checkerframework.afu.annotator.scanner.CommonScanner
org.checkerframework.afu.annotator.scanner.InstanceOfScanner
- All Implemented Interfaces:
TreeVisitor<Void,
Void>
InstanceOfScanner stores information about the names and offsets of instanceof checks inside a
method, and can also be used to scan the source tree and determine the index of a given
instanceof check, where the i^th index corresponds to the i^th instanceof check, using 0-based
indexing.
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
addInstanceOfToMethod
(String methodName, Integer offset) Adds an instanceof bytecode offset to the current list of offsets for methodName.static Integer
getMethodInstanceOfIndex
(String methodName, Integer offset) Returns the index of the given offset within the list of offsets for the given method, using 0-based indexing, or returns a negative number if the offset is not one of the offsets in the method.static int
indexOfInstanceOfTree
(TreePath origpath, Tree tree) Computes the index of the given instanceof tree amongst all instanceof tree inside its method, using 0-based indexing.visitInstanceOf
(InstanceOfTree node, Void p) Methods inherited from class org.checkerframework.afu.annotator.scanner.CommonScanner
visitClass
Methods inherited from class com.sun.source.util.TreePathScanner
getCurrentPath, scan, scan
Methods inherited from class com.sun.source.util.TreeScanner
reduce, scan, visitAnnotatedType, visitAnnotation, visitAnyPattern, visitArrayAccess, visitArrayType, visitAssert, visitAssignment, visitBinary, visitBindingPattern, visitBlock, visitBreak, visitCase, visitCatch, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitConstantCaseLabel, visitContinue, visitDeconstructionPattern, visitDefaultCaseLabel, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitLiteral, visitMemberReference, visitMemberSelect, visitMethod, visitMethodInvocation, visitModifiers, visitModule, visitNewArray, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPatternCaseLabel, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitStringTemplate, visitSwitch, visitSwitchExpression, visitSynchronized, visitThrow, visitTry, visitTypeCast, visitTypeParameter, visitUnary, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard, visitYield
-
Method Details
-
indexOfInstanceOfTree
Computes the index of the given instanceof tree amongst all instanceof tree inside its method, using 0-based indexing.- Parameters:
origpath
- the path ending in the given instanceof treetree
- the instanceof tree to search for- Returns:
- the index of the given instanceof tree
-
visitInstanceOf
- Specified by:
visitInstanceOf
in interfaceTreeVisitor<Void,
Void> - Overrides:
visitInstanceOf
in classTreeScanner<Void,
Void>
-
addInstanceOfToMethod
Adds an instanceof bytecode offset to the current list of offsets for methodName. This method must be called with monotonically increasing offsets for any one method.- Parameters:
methodName
- the name of the methodoffset
- the offset to add
-
getMethodInstanceOfIndex
Returns the index of the given offset within the list of offsets for the given method, using 0-based indexing, or returns a negative number if the offset is not one of the offsets in the method.- Parameters:
methodName
- the name of the methodoffset
- the offset of the instanceof check- Returns:
- the index of the given offset, or a negative number if the offset does not exist inside the method
-