Class TreeAnnotator

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected AnnotatedTypeFactory atypeFactory
      The type factory.
      • Fields inherited from class com.sun.source.util.SimpleTreeVisitor

        DEFAULT_VALUE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void log​(java.lang.String format, java.lang.Object... args)
      Output a message, if logging is on.
      java.lang.Void visitBinary​(com.sun.source.tree.BinaryTree tree, AnnotatedTypeMirror mirror)
      When overriding this method, getAnnotatedType on the left and right operands should only be called when absolutely necessary.
      java.lang.Void visitMethod​(com.sun.source.tree.MethodTree tree, AnnotatedTypeMirror p)
      This method is not called when checking a method invocation against its declaration.
      • Methods inherited from class com.sun.source.util.SimpleTreeVisitor

        defaultAction, visit, visit, visitAnnotatedType, visitAnnotation, visitArrayAccess, visitArrayType, visitAssert, visitAssignment, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIdentifier, visitIf, visitImport, visitInstanceOf, visitIntersectionType, visitLabeledStatement, visitLambdaExpression, visitLiteral, visitMemberReference, visitMemberSelect, visitMethodInvocation, visitModifiers, visitModule, visitNewArray, visitNewClass, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitProvides, visitRequires, visitReturn, visitSwitch, visitSynchronized, visitThrow, visitTry, visitTypeCast, visitTypeParameter, visitUnary, visitUnionType, visitUses, visitVariable, visitWhileLoop, visitWildcard
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TreeAnnotator

        protected TreeAnnotator​(AnnotatedTypeFactory atypeFactory)
        Create a new TreeAnnotator.
        Parameters:
        atypeFactory - the type factory
    • Method Detail

      • log

        @FormatMethod
        protected void log​(java.lang.String format,
                           java.lang.Object... args)
        Output a message, if logging is on.
        Parameters:
        format - a format string
        args - arguments to the format string
      • visitMethod

        public java.lang.Void visitMethod​(com.sun.source.tree.MethodTree tree,
                                          AnnotatedTypeMirror p)
        This method is not called when checking a method invocation against its declaration. So, instead of overriding this method, override TypeAnnotator.visitExecutable. TypeAnnotator.visitExecutable is called both when checking method declarations and method invocations.
        Specified by:
        visitMethod in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​AnnotatedTypeMirror>
        Overrides:
        visitMethod in class com.sun.source.util.SimpleTreeVisitor<java.lang.Void,​AnnotatedTypeMirror>
        See Also:
        TypeAnnotator
      • visitBinary

        public java.lang.Void visitBinary​(com.sun.source.tree.BinaryTree tree,
                                          AnnotatedTypeMirror mirror)
        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 interface com.sun.source.tree.TreeVisitor<java.lang.Void,​AnnotatedTypeMirror>
        Overrides:
        visitBinary in class com.sun.source.util.SimpleTreeVisitor<java.lang.Void,​AnnotatedTypeMirror>