Class PurityChecker.PurityCheckerHelper

  • All Implemented Interfaces:
    com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
    Enclosing class:
    PurityChecker

    protected static class PurityChecker.PurityCheckerHelper
    extends com.sun.source.util.TreePathScanner<java.lang.Void,​java.lang.Void>
    Helper class to keep PurityChecker's interface clean.

    The scanner is run on a single statement, not on a class or method.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected AnnotationProvider annoProvider
      The annotation provider (typically an AnnotatedTypeFactory).
    • Constructor Summary

      Constructors 
      Constructor Description
      PurityCheckerHelper​(AnnotationProvider annoProvider, boolean assumeSideEffectFree, boolean assumeDeterministic)
      Create a PurityCheckerHelper.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void assignmentCheck​(com.sun.source.tree.ExpressionTree variable)
      Check whether variable is permitted on the left-hand-side of an assignment.
      protected boolean isLocalVariable​(com.sun.source.tree.ExpressionTree variable)
      Checks if the argument is a local variable.
      java.lang.Void visitAssignment​(com.sun.source.tree.AssignmentTree tree, java.lang.Void ignore)  
      java.lang.Void visitCatch​(com.sun.source.tree.CatchTree tree, java.lang.Void ignore)  
      java.lang.Void visitCompoundAssignment​(com.sun.source.tree.CompoundAssignmentTree tree, java.lang.Void ignore)  
      java.lang.Void visitMethodInvocation​(com.sun.source.tree.MethodInvocationTree tree, java.lang.Void ignore)  
      java.lang.Void visitNewClass​(com.sun.source.tree.NewClassTree tree, java.lang.Void ignore)  
      java.lang.Void visitUnary​(com.sun.source.tree.UnaryTree tree, java.lang.Void ignore)  
      • Methods inherited from class com.sun.source.util.TreePathScanner

        getCurrentPath, scan, scan
      • Methods inherited from class com.sun.source.util.TreeScanner

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

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

      • annoProvider

        protected final AnnotationProvider annoProvider
        The annotation provider (typically an AnnotatedTypeFactory).
    • Constructor Detail

      • PurityCheckerHelper

        public PurityCheckerHelper​(AnnotationProvider annoProvider,
                                   boolean assumeSideEffectFree,
                                   boolean assumeDeterministic)
        Create a PurityCheckerHelper.
        Parameters:
        annoProvider - the annotation provider
        assumeSideEffectFree - true if all methods should be assumed to be @SideEffectFree
        assumeDeterministic - true if all methods should be assumed to be @Deterministic
    • Method Detail

      • visitCatch

        public java.lang.Void visitCatch​(com.sun.source.tree.CatchTree tree,
                                         java.lang.Void ignore)
        Specified by:
        visitCatch in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitCatch in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>
      • visitMethodInvocation

        public java.lang.Void visitMethodInvocation​(com.sun.source.tree.MethodInvocationTree tree,
                                                    java.lang.Void ignore)
        Specified by:
        visitMethodInvocation in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitMethodInvocation in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>
      • visitNewClass

        public java.lang.Void visitNewClass​(com.sun.source.tree.NewClassTree tree,
                                            java.lang.Void ignore)
        Specified by:
        visitNewClass in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitNewClass in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>
      • visitAssignment

        public java.lang.Void visitAssignment​(com.sun.source.tree.AssignmentTree tree,
                                              java.lang.Void ignore)
        Specified by:
        visitAssignment in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitAssignment in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>
      • visitUnary

        public java.lang.Void visitUnary​(com.sun.source.tree.UnaryTree tree,
                                         java.lang.Void ignore)
        Specified by:
        visitUnary in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitUnary in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>
      • assignmentCheck

        protected void assignmentCheck​(com.sun.source.tree.ExpressionTree variable)
        Check whether variable is permitted on the left-hand-side of an assignment.
        Parameters:
        variable - the lhs to check
      • isLocalVariable

        protected boolean isLocalVariable​(com.sun.source.tree.ExpressionTree variable)
        Checks if the argument is a local variable.
        Parameters:
        variable - the tree to check
        Returns:
        true if the argument is a local variable
      • visitCompoundAssignment

        public java.lang.Void visitCompoundAssignment​(com.sun.source.tree.CompoundAssignmentTree tree,
                                                      java.lang.Void ignore)
        Specified by:
        visitCompoundAssignment in interface com.sun.source.tree.TreeVisitor<java.lang.Void,​java.lang.Void>
        Overrides:
        visitCompoundAssignment in class com.sun.source.util.TreeScanner<java.lang.Void,​java.lang.Void>