@Override public Void scan(Tree tree, Void unused) { return Objects.equals(stoppingPoint, tree) ? null : super.scan(tree, unused); }
@Override public Void visitMethodInvocation(MethodInvocationTree tree, Void unused) { if (!tree.equals(methodInvocationTree)) { count.incrementAndGet(); } return super.visitMethodInvocation(tree, null); }
@Override public Void visitMethod(MethodTree node, VisitorState state) { knownLocalVars.clear(); return super.visitMethod(node, state); }
@Override public Void visitClass(ClassTree classTree, VisitorState visitorState) { boolean priorInShadowClass = inShadowClass; inShadowClass = hasAnnotation(classTree, Implements.class, visitorState); try { return super.visitClass(classTree, visitorState); } finally { inShadowClass = priorInShadowClass; } }
@Override public Void visitMemberSelect(MemberSelectTree tree, Void unused) { ExpressionTree receiver = getReceiver(tree); if (receiver == null || receiver.toString().equals("this")) { Symbol symbol = ((JCFieldAccess) tree).sym; handleSymbol(symbol); } return super.visitMemberSelect(tree, null); }
@Override public Void visitVariable(VariableTree node, VisitorState state) { if (getSymbol(node).getKind() == ElementKind.LOCAL_VARIABLE) { knownLocalVars.add(node.getName().toString()); } else { knownFields.add(node.getName().toString()); } return super.visitVariable(node, state); }
@Override public Void visitAssignment(AssignmentTree tree, ExpressionTree expr) { if (expressionsEqual(tree.getVariable(), expr)) { earliestStart = Math.min(earliestStart, state.getEndPosition(tree)); } return super.visitAssignment(tree, expr); } }
@Override public Void visitIdentifier(IdentifierTree node, Void v) { if (((JCIdent) node).sym instanceof VarSymbol) { freeVars.add(node); } return super.visitIdentifier(node, v); } }.scan(tree, null);
@Override public Void visitCompoundAssignment(CompoundAssignmentTree tree, Void unused) { check(tree.getVariable()); return super.visitCompoundAssignment(tree, unused); }
@Override public Boolean visitNewClass(NewClassTree constructorTree, Void unused) { return super.visitNewClass(constructorTree, unused) || DESCRIPTION_CONSTRUCTOR.matches(constructorTree, state); }
Name name = node.getName(); if (name.contentEquals("<init>")) { return super.visitMethod(node, v); } else { checkSampling(node); if (node.getParameters().size() != 1 || ! "int".equals(node.getParameters().get(0).getType().toString())) { reportError("onexit.invalid", node); return super.visitMethod(node, v); vt.accept(new TreeScanner<Void, Void>() { @Override public Void visitAnnotation(AnnotationTree at, Void p) { return super.visitMethod(node, v);
@Override public Void visitClass(ClassTree classTree, VisitorState visitorState) { boolean priorInShadowClass = inShadowClass; inShadowClass = hasAnnotation(classTree, Implements.class, visitorState); try { return super.visitClass(classTree, visitorState); } finally { inShadowClass = priorInShadowClass; } }
@Override public Void visitMemberSelect(MemberSelectTree tree, Void unused) { fixQualifier(tree, tree.getExpression()); return super.visitMemberSelect(tree, unused); }
@Override public Void visitVariable(VariableTree node, Void aVoid) { recordInitialization(node, node.getInitializer()); return super.visitVariable(node, aVoid); }
@Override public Void visitAssignment(AssignmentTree assignmentTree, ExpressionTree optionalVar) { if (ASTHelpers.sameVariable(assignmentTree.getVariable(), optionalVar)) { hasAssignment = true; } return super.visitAssignment(assignmentTree, optionalVar); } }
@Override public Void visitIdentifier(IdentifierTree node, Void unused) { Type declaredType = ((JCIdent) node).sym.type; generateConstraintsFromAnnotations(declaredType, node, new ArrayDeque<>()); return super.visitIdentifier(node, unused); }
@Override public Void visitCompoundAssignment(CompoundAssignmentTree node, Void unused) { recordWrite(node.getVariable()); return super.visitCompoundAssignment(node, null); }
@Override public Boolean visitNewClass(NewClassTree node, Void v) { reportError("no.new.object", node); return super.visitNewClass(node, v); }
@Override public Void scan(Iterable<? extends Tree> iterable, Void unused) { if (stoppingPoint != null && iterable != null) { ImmutableList.Builder<Tree> builder = ImmutableList.builder(); for (Tree t : iterable) { if (stoppingPoint.equals(t)) { break; } builder.add(t); } iterable = builder.build(); } return super.scan(iterable, unused); }
@Override public Void visitMethodInvocation(MethodInvocationTree methodTree, Void unused) { if (methodTree.equals(tree)) { isTerminalCondition.set(true); } return super.visitMethodInvocation(methodTree, null); }