package com.redhat.ceylon.eclipse.code.refactor;
import java.util.HashSet;
import java.util.Set;
import com.redhat.ceylon.compiler.typechecker.tree.Tree;
import com.redhat.ceylon.compiler.typechecker.tree.Visitor;
import com.redhat.ceylon.model.typechecker.model.Declaration;
import com.redhat.ceylon.model.typechecker.model.Setter;
@Deprecated
/**
* @deprecated see com.redhat.ceylon.ide.common.util.FindRefinementsVisitor
*/
class FindRefinementsVisitor extends Visitor {
private final Declaration declaration;
private Set<Tree.StatementOrArgument> declarationNodes =
new HashSet<Tree.StatementOrArgument>();
public FindRefinementsVisitor(Declaration declaration) {
this.declaration = declaration;
}
public Set<Tree.StatementOrArgument> getDeclarationNodes() {
return declarationNodes;
}
protected boolean isRefinement(Declaration dec) {
return dec!=null && dec.refines(declaration) ||
isSetterRefinement(dec);
}
private boolean isSetterRefinement(Declaration dec) {
if (dec instanceof Setter) {
return ((Setter) dec).getGetter().refines(declaration);
}
else {
return false;
}
}
@Override
public void visit(Tree.SpecifierStatement that) {
if (that.getRefinement() &&
isRefinement(that.getDeclaration())) {
declarationNodes.add(that);
}
super.visit(that);
}
@Override
public void visit(Tree.Declaration that) {
if (!(that instanceof Tree.TypeConstraint) &&
isRefinement(that.getDeclarationModel())) {
declarationNodes.add(that);
}
super.visit(that);
}
}