Class PropagationTreeAnnotator
- java.lang.Object
-
- com.sun.source.util.SimpleTreeVisitor<java.lang.Void,AnnotatedTypeMirror>
-
- org.checkerframework.framework.type.treeannotator.TreeAnnotator
-
- org.checkerframework.framework.type.treeannotator.PropagationTreeAnnotator
-
- All Implemented Interfaces:
com.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Direct Known Subclasses:
InitializationParentAnnotatedTypeFactory.CommitmentTreeAnnotator
,NullnessNoInitAnnotatedTypeFactory.NullnessPropagationTreeAnnotator
public class PropagationTreeAnnotator extends TreeAnnotator
PropagationTreeAnnotator
adds qualifiers to types where the resulting type is a function of an input type, e.g. the result of a binary operation is a LUB of the type of expressions in the binary operation.PropagationTreeAnnotator
is generally run first byListTreeAnnotator
since the trees it handles are not usually targets of@DefaultFor
.PropagationTreeAnnotator
does not traverse trees deeply by default.- See Also:
TreeAnnotator
-
-
Field Summary
-
Fields inherited from class org.checkerframework.framework.type.treeannotator.TreeAnnotator
atypeFactory
-
-
Constructor Summary
Constructors Constructor Description PropagationTreeAnnotator(AnnotatedTypeFactory atypeFactory)
Creates aPropagationTreeAnnotator
for the givenatypeFactory
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Void
visitBinary(com.sun.source.tree.BinaryTree tree, AnnotatedTypeMirror type)
When overriding this method, getAnnotatedType on the left and right operands should only be called when absolutely necessary.java.lang.Void
visitCompoundAssignment(com.sun.source.tree.CompoundAssignmentTree tree, AnnotatedTypeMirror type)
java.lang.Void
visitNewArray(com.sun.source.tree.NewArrayTree arrayTree, AnnotatedTypeMirror arrayType)
java.lang.Void
visitTypeCast(com.sun.source.tree.TypeCastTree tree, AnnotatedTypeMirror type)
java.lang.Void
visitUnary(com.sun.source.tree.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, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitConditionalExpression, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitInstanceOf, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitLiteral, visitMemberReference, visitMemberSelect, visitMethodInvocation, visitModifiers, visitModule, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitSwitch, visitSynchronized, visitThrow, visitTry, visitTypeParameter, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard
-
-
-
-
Constructor Detail
-
PropagationTreeAnnotator
public PropagationTreeAnnotator(AnnotatedTypeFactory atypeFactory)
Creates aPropagationTreeAnnotator
for the givenatypeFactory
.
-
-
Method Detail
-
visitNewArray
public java.lang.Void visitNewArray(com.sun.source.tree.NewArrayTree arrayTree, AnnotatedTypeMirror arrayType)
- Specified by:
visitNewArray
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Overrides:
visitNewArray
in classcom.sun.source.util.SimpleTreeVisitor<java.lang.Void,AnnotatedTypeMirror>
-
visitCompoundAssignment
public java.lang.Void visitCompoundAssignment(com.sun.source.tree.CompoundAssignmentTree tree, AnnotatedTypeMirror type)
- Specified by:
visitCompoundAssignment
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Overrides:
visitCompoundAssignment
in classcom.sun.source.util.SimpleTreeVisitor<java.lang.Void,AnnotatedTypeMirror>
-
visitBinary
public java.lang.Void visitBinary(com.sun.source.tree.BinaryTree tree, AnnotatedTypeMirror type)
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 interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Overrides:
visitBinary
in classTreeAnnotator
-
visitUnary
public java.lang.Void visitUnary(com.sun.source.tree.UnaryTree tree, AnnotatedTypeMirror type)
- Specified by:
visitUnary
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Overrides:
visitUnary
in classcom.sun.source.util.SimpleTreeVisitor<java.lang.Void,AnnotatedTypeMirror>
-
visitTypeCast
public java.lang.Void visitTypeCast(com.sun.source.tree.TypeCastTree tree, AnnotatedTypeMirror type)
- Specified by:
visitTypeCast
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,AnnotatedTypeMirror>
- Overrides:
visitTypeCast
in classcom.sun.source.util.SimpleTreeVisitor<java.lang.Void,AnnotatedTypeMirror>
-
-