de.unisaarland.cs.st.jerify.verifier.alias
Class AliasAnalysisExpressionVisitor

java.lang.Object
  extended by com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
      extended by de.unisaarland.cs.st.jerify.verifier.alias.AliasAnalysisExpressionVisitor
All Implemented Interfaces:
com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

public class AliasAnalysisExpressionVisitor
extends com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

Determines all sources of objects, whether it is a new bla() creation or a variable use. It is mainly used to get the alias information of receiver of a method invocation. E.g. for a.bla(); if a is parsed it gets all possiblities which new created object/variables are used.

Author:
Daniel Wand (typestate@ewand.de)

Constructor Summary
AliasAnalysisExpressionVisitor(ClassCFGAliasAnalysis aliasAnalysis, boolean visitLiteral)
           
 
Method Summary
 java.lang.Void visitArrayAccess(com.sun.source.tree.ArrayAccessTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitIdentifier(com.sun.source.tree.IdentifierTree id, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitLiteral(com.sun.source.tree.LiteralTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitMemberSelect(com.sun.source.tree.MemberSelectTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitMethodInvocation(com.sun.source.tree.MethodInvocationTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitNewArray(com.sun.source.tree.NewArrayTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitNewClass(com.sun.source.tree.NewClassTree node, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 java.lang.Void visitTypeCast(com.sun.source.tree.TypeCastTree arg0, Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
           
 
Methods inherited from class com.sun.source.util.TreeScanner
reduce, scan, scan, visitAnnotatedType, visitAnnotation, visitArrayType, visitAssert, visitAssignment, visitBinary, visitBlock, visitBreak, visitCase, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitEnhancedForLoop, visitErroneous, visitExpressionStatement, visitForLoop, visitIf, visitImport, visitInstanceOf, visitLabeledStatement, visitMethod, visitModifiers, visitOther, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitReturn, visitSwitch, visitSynchronized, visitThrow, visitTry, visitTypeParameter, visitUnary, visitVariable, visitWhileLoop, visitWildcard
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AliasAnalysisExpressionVisitor

public AliasAnalysisExpressionVisitor(ClassCFGAliasAnalysis aliasAnalysis,
                                      boolean visitLiteral)
Method Detail

visitMemberSelect

public java.lang.Void visitMemberSelect(com.sun.source.tree.MemberSelectTree node,
                                        Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitMemberSelect in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitMemberSelect in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitArrayAccess

public java.lang.Void visitArrayAccess(com.sun.source.tree.ArrayAccessTree node,
                                       Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitArrayAccess in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitArrayAccess in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitNewArray

public java.lang.Void visitNewArray(com.sun.source.tree.NewArrayTree node,
                                    Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitNewArray in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitNewArray in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitTypeCast

public java.lang.Void visitTypeCast(com.sun.source.tree.TypeCastTree arg0,
                                    Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitTypeCast in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitTypeCast in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitNewClass

public java.lang.Void visitNewClass(com.sun.source.tree.NewClassTree node,
                                    Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitNewClass in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitNewClass in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitMethodInvocation

public java.lang.Void visitMethodInvocation(com.sun.source.tree.MethodInvocationTree node,
                                            Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitMethodInvocation in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitMethodInvocation in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitLiteral

public java.lang.Void visitLiteral(com.sun.source.tree.LiteralTree node,
                                   Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitLiteral in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitLiteral in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>

visitIdentifier

public java.lang.Void visitIdentifier(com.sun.source.tree.IdentifierTree id,
                                      Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>> p)
Specified by:
visitIdentifier in interface com.sun.source.tree.TreeVisitor<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>
Overrides:
visitIdentifier in class com.sun.source.util.TreeScanner<java.lang.Void,Pair<java.util.Set<AliasAnalysisSource>,java.util.List<TSFlowNode>>>