package fr.inria.diversify.codeFragmentProcessor; import spoon.reflect.code.CtExpression; import spoon.reflect.code.CtFieldAccess; import spoon.reflect.code.CtLocalVariable; import spoon.reflect.code.CtVariableAccess; import spoon.reflect.visitor.CtScanner; /** * User: Simon * Date: 5/3/13 * Time: 4:59 PM */ public class ValidExpressionVisitor extends CtScanner { protected boolean valid = true; protected CtExpression root; public boolean isValid(){ return valid; } public ValidExpressionVisitor(CtExpression e) { root = e; } public <T> void visitCtLocalVariable(CtLocalVariable<T> localVariable) { if(localVariable == root) valid = false; super.visitCtLocalVariable(localVariable); } public <T> void visitCtVariableAccess(CtVariableAccess<T> variableAccess) { if(variableAccess == root) valid = false; super.visitCtVariableAccess(variableAccess); } // public <T> void visitCtLocalVariableReference(CtLocalVariableReference<T> reference) { // if(reference == root) // valid = false; // } public <T> void visitCtFieldAccess(CtFieldAccess<T> fieldAccess) { if(fieldAccess == root) valid = false; } }