Class ModifiabilityVisitor
java.lang.Object
com.sun.source.util.TreeScanner<Void,Void>
com.sun.source.util.TreePathScanner<Void,Void>
org.checkerframework.framework.source.SourceVisitor<Void,Void>
org.checkerframework.checker.modifiability.ModifiabilityVisitor
- All Implemented Interfaces:
TreeVisitor<Void,Void>
Visitor for the aggregate ModifiabilityChecker.
The checks in this class are in the aggregate checker rather than in ModifiabilityBaseVisitor because they do not depend on a modifiability hierarchy; running them
in each sub-checker would issue the same error five times.
-
Field Summary
Fields inherited from class org.checkerframework.framework.source.SourceVisitor
elements, root, trees, treesWithSuppressWarnings, types -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedModifiabilityVisitor(ModifiabilityChecker checker) Creates aSourceVisitorto use for scanning a source tree. -
Method Summary
Modifier and TypeMethodDescriptionvisitAnnotation(AnnotationTree tree, Void p) SetsinParameterTypewhile scanning this lambda's formal parameters, so that an explicitly-typed lambda parameter may be annotated@UnmodifiableParam, just as a method formal parameter may.visitMethod(MethodTree tree, Void p) SetsinParameterTypewhile scanning this method's formal and receiver parameters, so thatvisitAnnotation(com.sun.source.tree.AnnotationTree, java.lang.Void)can distinguish an allowed@UnmodifiableParamin a parameter type from a disallowed one elsewhere in the same method.Methods inherited from class org.checkerframework.framework.source.SourceVisitor
scan, setRoot, storeSuppressWarningsAnno, visit, visitClass, visitVariableMethods inherited from class com.sun.source.util.TreePathScanner
getCurrentPath, scanMethods inherited from class com.sun.source.util.TreeScanner
reduce, scan, visitAnnotatedType, 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, 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, visitWhileLoop, visitWildcard, visitYield
-
Constructor Details
-
ModifiabilityVisitor
Creates aSourceVisitorto use for scanning a source tree.- Parameters:
checker- the modifiability checker to invoke on the input source tree
-
-
Method Details
-
visitMethod
SetsinParameterTypewhile scanning this method's formal and receiver parameters, so thatvisitAnnotation(com.sun.source.tree.AnnotationTree, java.lang.Void)can distinguish an allowed@UnmodifiableParamin a parameter type from a disallowed one elsewhere in the same method.The field needs no save-and-restore discipline, because neither a method declaration nor a lambda expression can appear within a formal parameter. It is reset in a
finallyclause because this visitor is reused for every compilation unit, and a stale true value would suppress every subsequentunmodparam.locationerror.- Specified by:
visitMethodin interfaceTreeVisitor<Void,Void> - Overrides:
visitMethodin classSourceVisitor<Void,Void>
-
visitLambdaExpression
SetsinParameterTypewhile scanning this lambda's formal parameters, so that an explicitly-typed lambda parameter may be annotated@UnmodifiableParam, just as a method formal parameter may. An implicitly-typed lambda parameter has no type to annotate.- Specified by:
visitLambdaExpressionin interfaceTreeVisitor<Void,Void> - Overrides:
visitLambdaExpressionin classTreeScanner<Void,Void>
-
visitAnnotation
- Specified by:
visitAnnotationin interfaceTreeVisitor<Void,Void> - Overrides:
visitAnnotationin classTreeScanner<Void,Void>
-