Class LambdaScanner
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.LambdaScanner
- All Implemented Interfaces:
TreeVisitor<Void,
Void>
LambdaScanner stores information about the names and offsets of lambda expressions 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
addLambdaExpressionToMethod
(String methodName, Integer offset) Adds a lambda expression bytecode offset to the current list of offsets for methodName.static Integer
getMethodLambdaExpressionIndex
(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 context.static int
indexOfLambdaExpressionTree
(TreePath origpath, Tree tree) Computes the index of the given lambda expression tree amongst all lambda expression trees inside its method, using 0-based indexing.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, visitInstanceOf, visitIntersectionType, visitLabeledStatement, 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
-
indexOfLambdaExpressionTree
Computes the index of the given lambda expression tree amongst all lambda expression trees inside its method, using 0-based indexing.- Parameters:
origpath
- the path ending in the given lambda expression treetree
- the lambda expression tree to search for- Returns:
- the index of the given lambda expression tree
-
visitLambdaExpression
- Specified by:
visitLambdaExpression
in interfaceTreeVisitor<Void,
Void> - Overrides:
visitLambdaExpression
in classTreeScanner<Void,
Void>
-
addLambdaExpressionToMethod
Adds a lambda expression 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
-
getMethodLambdaExpressionIndex
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 context.- Parameters:
methodName
- the name of the methodoffset
- the offset of the lambda expression- Returns:
- the index of the given offset, or a negative number if the offset does not exist inside the context
-