package com.redhat.ceylon.eclipse.util; import com.redhat.ceylon.compiler.typechecker.tree.Node; import com.redhat.ceylon.compiler.typechecker.tree.Tree; import com.redhat.ceylon.compiler.typechecker.tree.Visitor; @Deprecated public class FindStatementVisitor extends Visitor { private final Node term; private Tree.Statement statement; private Tree.Statement currentStatement; private final boolean toplevel; private boolean currentlyToplevel=true; private boolean resultIsToplevel; private boolean inParameter; public Tree.Statement getStatement() { return statement; } public boolean isToplevel() { return resultIsToplevel; } public FindStatementVisitor(Node term, boolean toplevel) { this.term = term; this.toplevel = toplevel; } @Override public void visit(Tree.Parameter that) { boolean oip = inParameter; inParameter = true; super.visit(that); inParameter = oip; } @Override public void visit(Tree.Statement that) { if ((!toplevel || currentlyToplevel) && !inParameter) { if (!(that instanceof Tree.Variable || that instanceof Tree.TypeConstraint || that instanceof Tree.TypeParameterDeclaration)) { currentStatement = that; resultIsToplevel = currentlyToplevel; } } boolean octl = currentlyToplevel; currentlyToplevel = false; super.visit(that); currentlyToplevel = octl; } @Override public void visitAny(Node node) { if (node==term) { statement = currentStatement; resultIsToplevel = currentlyToplevel; } if (statement==null) { super.visitAny(node); } } }