public class OptionalVisitor extends BaseTypeVisitor<BaseAnnotatedTypeFactory>
BaseTypeVisitor.OverrideCheckeratypeFactory, checker, contractsUtils, positions, TARGET, targetValueElement, typeValidator, visitorStateelements, root, trees, treesWithSuppressWarnings, types| Constructor and Description | 
|---|
| OptionalVisitor(BaseTypeChecker checker)Create an OptionalVisitor. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected BaseTypeValidator | createTypeValidator() | 
| void | handleConditionalStatementIsPresentGet(IfTree node)Part of rule #3. | 
| void | handleCreationElimination(MethodInvocationTree node)Rule #4. | 
| void | handleTernaryIsPresentGet(ConditionalExpressionTree node)Part of rule #3. | 
| static StatementTree | skipBlocks(StatementTree tree)If the given tree is a block tree with a single element, return the enclosed non-block
 statement. | 
| Void | visitConditionalExpression(ConditionalExpressionTree node,
                          Void p)If the computation of the type of the ConditionalExpressionTree in
 org.checkerframework.framework.type.TypeFromTree.TypeFromExpression.visitConditionalExpression(ConditionalExpressionTree,
 AnnotatedTypeFactory) is correct, the following checks are redundant. | 
| Void | visitIf(IfTree node,
       Void p) | 
| Void | visitMethodInvocation(MethodInvocationTree node,
                     Void p)Performs a method invocation check. | 
| Void | visitVariable(VariableTree node,
             Void p)Rule #6 (partial). | 
checkAccess, checkArguments, checkArrayInitialization, checkConditionalPostcondition, checkConstructorInvocation, checkConstructorResult, checkContract, checkDefaultConstructor, checkExceptionParameter, checkExtendsImplements, checkFieldInvariantDeclarations, checkMethodInvocability, checkMethodReferenceAsOverride, checkOverride, checkOverride, checkPostcondition, checkPreconditions, checkPurity, checkQualifierParameter, checkSuperConstructorCall, checkThisConstructorCall, checkThisOrSuperConstructorCall, checkThrownExpression, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, checkVarargs, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheckEndDiagnostic, commonAssignmentCheckEndDiagnostic, commonAssignmentCheckStartDiagnostic, createOverrideChecker, createTypeFactory, enclosingMemberSelect, enclosingStatement, getExceptionParameterLowerBoundAnnotations, getThrowUpperBoundAnnotations, getTypeFactory, isAccessAllowed, isTypeCastSafe, isValidUse, isValidUse, isValidUse, processClassTree, reportMethodInvocabilityError, reportPurityErrors, scan, setRoot, shouldSkipUses, skipReceiverSubtypeCheck, testTypevarContainment, typeCheckVectorCopyIntoArgument, validateType, validateTypeOf, visitAnnotation, visitArrayAccess, visitAssignment, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitEnhancedForLoop, visitIdentifier, visitInstanceOf, visitLambdaExpression, visitMemberReference, visitMethod, visitNewArray, visitNewClass, visitReturn, visitThrow, visitTypeCast, visitTypeParameter, visitUnaryvisitgetCurrentPath, scanreduce, scan, visitAnnotatedType, visitArrayType, visitAssert, visitBinary, visitBlock, visitBreak, visitCase, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitMemberSelect, visitModifiers, visitModule, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitProvides, visitRequires, visitSwitch, visitSynchronized, visitTry, visitUnionType, visitUses, visitWhileLoop, visitWildcardpublic OptionalVisitor(BaseTypeChecker checker)
protected BaseTypeValidator createTypeValidator()
createTypeValidator in class BaseTypeVisitor<BaseAnnotatedTypeFactory>public Void visitConditionalExpression(ConditionalExpressionTree node, Void p)
BaseTypeVisitorvisitConditionalExpression in interface TreeVisitor<Void,Void>visitConditionalExpression in class BaseTypeVisitor<BaseAnnotatedTypeFactory>public void handleTernaryIsPresentGet(ConditionalExpressionTree node)
Pattern match for: VAR.isPresent() ? VAR.get().METHOD() : VALUE
 
Prefer: VAR.map(METHOD).orElse(VALUE);
public Void visitIf(IfTree node, Void p)
visitIf in interface TreeVisitor<Void,Void>visitIf in class TreeScanner<Void,Void>public void handleConditionalStatementIsPresentGet(IfTree node)
Pattern match for: if (VAR.isPresent()) { METHOD(VAR.get()); }
 
Prefer: VAR.ifPresent(METHOD);
public Void visitMethodInvocation(MethodInvocationTree node, Void p)
BaseTypeVisitorAn invocation of a method, m, on the receiver, r is valid only if:
visitMethodInvocation in interface TreeVisitor<Void,Void>visitMethodInvocation in class BaseTypeVisitor<BaseAnnotatedTypeFactory>public void handleCreationElimination(MethodInvocationTree node)
Pattern match for: CREATION().ELIMINATION()
 
Prefer: VAR.ifPresent(METHOD);
public Void visitVariable(VariableTree node, Void p)
Don't use Optional in fields and method parameters.
visitVariable in interface TreeVisitor<Void,Void>visitVariable in class BaseTypeVisitor<BaseAnnotatedTypeFactory>public static StatementTree skipBlocks(StatementTree tree)
tree - a statement tree