public class OptionalVisitor
extends org.checkerframework.common.basetype.BaseTypeVisitor<org.checkerframework.common.basetype.BaseAnnotatedTypeFactory>
Constructor and Description |
---|
OptionalVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker) |
Modifier and Type | Method and Description |
---|---|
protected org.checkerframework.common.basetype.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.
|
java.lang.Void |
visitConditionalExpression(ConditionalExpressionTree node,
java.lang.Void p) |
java.lang.Void |
visitIf(IfTree node,
java.lang.Void p) |
java.lang.Void |
visitMethodInvocation(MethodInvocationTree node,
java.lang.Void p) |
java.lang.Void |
visitVariable(VariableTree node,
java.lang.Void p)
Rule #6 (partial).
|
checkAccess, checkArguments, checkArrayInitialization, checkAssignability, checkConditionalPostcondition, checkConstructorInvocation, checkContract, checkDefaultConstructor, checkExceptionParameter, checkFieldInvariantDeclarations, checkForAnnotatedJdk, checkMethodInvocability, checkMethodReferenceAsOverride, checkOverride, checkOverride, checkPostcondition, checkPreconditions, checkThrownExpression, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, checkVarargs, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheck, createOverrideChecker, createTypeFactory, enclosingMemberSelect, enclosingStatement, getExceptionParameterLowerBoundAnnotations, getThrowUpperBoundAnnotations, getTypeFactory, isAccessAllowed, isAssignable, isValidUse, isValidUse, isValidUse, isVectorCopyInto, processClassTree, reportPurityErrors, scan, setRoot, shouldSkipUses, skipReceiverSubtypeCheck, testTypevarContainment, typeCheckVectorCopyIntoArgument, validateType, validateTypeOf, visitAnnotation, visitArrayAccess, visitAssignment, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitEnhancedForLoop, visitIdentifier, visitInstanceOf, visitLambdaExpression, visitMemberReference, visitMethod, visitNewArray, visitNewClass, visitParameterizedType, visitReturn, visitThrow, visitTypeCast, visitTypeParameter, visitUnary
getCurrentPath, scan
reduce, scan, visitAnnotatedType, visitArrayType, visitAssert, visitBinary, visitBlock, visitBreak, visitCase, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitForLoop, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitMemberSelect, visitModifiers, visitOther, visitParenthesized, visitPrimitiveType, visitSwitch, visitSynchronized, visitTry, visitUnionType, visitWhileLoop, visitWildcard
public OptionalVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker)
protected org.checkerframework.common.basetype.BaseTypeValidator createTypeValidator()
createTypeValidator
in class org.checkerframework.common.basetype.BaseTypeVisitor<org.checkerframework.common.basetype.BaseAnnotatedTypeFactory>
public java.lang.Void visitConditionalExpression(ConditionalExpressionTree node, java.lang.Void p)
visitConditionalExpression
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitConditionalExpression
in class org.checkerframework.common.basetype.BaseTypeVisitor<org.checkerframework.common.basetype.BaseAnnotatedTypeFactory>
public void handleTernaryIsPresentGet(ConditionalExpressionTree node)
Pattern match for: VAR.isPresent() ? VAR.get().METHOD() : VALUE
Prefer: VAR.map(METHOD).orElse(VALUE);
public java.lang.Void visitIf(IfTree node, java.lang.Void p)
visitIf
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitIf
in class TreeScanner<java.lang.Void,java.lang.Void>
public void handleConditionalStatementIsPresentGet(IfTree node)
Pattern match for: if (VAR.isPresent()) { METHOD(VAR.get()); }
Prefer: VAR.ifPresent(METHOD);
public java.lang.Void visitMethodInvocation(MethodInvocationTree node, java.lang.Void p)
visitMethodInvocation
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitMethodInvocation
in class org.checkerframework.common.basetype.BaseTypeVisitor<org.checkerframework.common.basetype.BaseAnnotatedTypeFactory>
public void handleCreationElimination(MethodInvocationTree node)
Pattern match for: CREATION().ELIMINATION()
Prefer: VAR.ifPresent(METHOD);
public java.lang.Void visitVariable(VariableTree node, java.lang.Void p)
Don't use Optional in fields and method parameters.
visitVariable
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitVariable
in class org.checkerframework.common.basetype.BaseTypeVisitor<org.checkerframework.common.basetype.BaseAnnotatedTypeFactory>
public static StatementTree skipBlocks(StatementTree tree)
tree
- a statement tree