package no.uio.ifi.refaktor.analyze.collectors; import no.uio.ifi.refaktor.analyze.CollectorManager; import no.uio.ifi.refaktor.analyze.analyzers.Checker; import no.uio.ifi.refaktor.analyze.exceptions.IllegalExpressionFoundException; import no.uio.ifi.refaktor.analyze.exceptions.IllegalStatementFoundException; import no.uio.ifi.refaktor.utils.CompilationUnitTextSelection; import org.eclipse.jdt.core.dom.ASTNode; import org.eclipse.jdt.core.dom.CatchClause; import org.eclipse.jdt.core.dom.EnhancedForStatement; import org.eclipse.jdt.core.dom.ForStatement; import org.eclipse.jdt.core.dom.WhileStatement; public class HasWhileOrForOrCatchWithReturnInsideCheckerCollector extends PropertyCollector implements Checker { private final IllegalReturnStatementChecker hasReturnStatementChecker; public HasWhileOrForOrCatchWithReturnInsideCheckerCollector(CompilationUnitTextSelection selection) { super(selection); hasReturnStatementChecker = new IllegalReturnStatementChecker(); } @Override public void check() throws IllegalStatementFoundException, IllegalExpressionFoundException { CollectorManager.collectProperties(selection, this); } @Override public boolean visit(WhileStatement node) { if (!nodeInSelection(node)) return false; check(node); return false; } @Override public boolean visit(ForStatement node) { if (!nodeInSelection(node)) return false; check(node); return false; } @Override public boolean visit(EnhancedForStatement node) { if (!nodeInSelection(node)) return false; check(node); return false; } @Override public boolean visit(CatchClause node) { if (!nodeInSelection(node)) return false; check(node); return false; } private void check(ASTNode node) { node.accept(hasReturnStatementChecker); } @Override public void clearData() { } }