Class UpperBoundAnnotatedTypeFactory.UpperBoundTreeAnnotator
java.lang.Object
com.sun.source.util.SimpleTreeVisitor<Void,AnnotatedTypeMirror>
org.checkerframework.framework.type.treeannotator.TreeAnnotator
org.checkerframework.checker.index.upperbound.UpperBoundAnnotatedTypeFactory.UpperBoundTreeAnnotator
- All Implemented Interfaces:
TreeVisitor<Void,
AnnotatedTypeMirror>
- Enclosing class:
- UpperBoundAnnotatedTypeFactory
-
Field Summary
Fields inherited from class org.checkerframework.framework.type.treeannotator.TreeAnnotator
atypeFactory
Fields inherited from class com.sun.source.util.SimpleTreeVisitor
DEFAULT_VALUE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvisitBinary
(BinaryTree tree, AnnotatedTypeMirror type) When overriding this method, getAnnotatedType on the left and right operands should only be called when absolutely necessary.visitLiteral
(LiteralTree tree, AnnotatedTypeMirror type) This exists for Math.min and Random.nextInt, which must be special-cased.visitUnary
(UnaryTree tree, AnnotatedTypeMirror type) Methods inherited from class org.checkerframework.framework.type.treeannotator.TreeAnnotator
log, visitMethod
Methods inherited from class com.sun.source.util.SimpleTreeVisitor
defaultAction, visit, visit, visitAnnotatedType, visitAnnotation, visitArrayAccess, visitArrayType, visitAssert, visitAssignment, visitBindingPattern, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitConditionalExpression, visitContinue, visitDefaultCaseLabel, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitGuardedPattern, visitIdentifier, visitIf, visitImport, visitInstanceOf, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitMemberReference, visitMemberSelect, visitModifiers, visitModule, visitNewArray, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitParenthesizedPattern, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitSwitch, visitSwitchExpression, visitSynchronized, visitThrow, visitTry, visitTypeCast, visitTypeParameter, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard, visitYield
-
Constructor Details
-
UpperBoundTreeAnnotator
-
-
Method Details
-
visitMethodInvocation
This exists for Math.min and Random.nextInt, which must be special-cased.- Math.min has unusual semantics that combines annotations for the UBC.
- The return type of Random.nextInt depends on the argument, but is not equal to it, so a polymorphic qualifier is insufficient.
- Specified by:
visitMethodInvocation
in interfaceTreeVisitor<Void,
AnnotatedTypeMirror> - Overrides:
visitMethodInvocation
in classSimpleTreeVisitor<Void,
AnnotatedTypeMirror>
-
visitLiteral
- Specified by:
visitLiteral
in interfaceTreeVisitor<Void,
AnnotatedTypeMirror> - Overrides:
visitLiteral
in classSimpleTreeVisitor<Void,
AnnotatedTypeMirror>
-
visitUnary
- Specified by:
visitUnary
in interfaceTreeVisitor<Void,
AnnotatedTypeMirror> - Overrides:
visitUnary
in classSimpleTreeVisitor<Void,
AnnotatedTypeMirror>
-
visitCompoundAssignment
- Specified by:
visitCompoundAssignment
in interfaceTreeVisitor<Void,
AnnotatedTypeMirror> - Overrides:
visitCompoundAssignment
in classSimpleTreeVisitor<Void,
AnnotatedTypeMirror>
-
visitBinary
Description copied from class:TreeAnnotator
When overriding this method, getAnnotatedType on the left and right operands should only be called when absolutely necessary. Otherwise, the checker will be very slow on heavily nested binary trees. (For example, a + b + c + d + e + f + g + h.)If a checker's performance is still too slow, the types of binary trees could be computed in a subclass of
CFTransfer
. When computing the types in a transfer, look up the value in the store rather than the AnnotatedTypeFactory. Then this method should annotate binary trees with top so that the type applied in the transfer is always a subtype of the type the AnnotatedTypeFactory computes.- Specified by:
visitBinary
in interfaceTreeVisitor<Void,
AnnotatedTypeMirror> - Overrides:
visitBinary
in classTreeAnnotator
-