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 FindBodyContainerVisitor extends Visitor {
Node node;
Tree.Declaration declaration;
Tree.Declaration currentDeclaration;
public Tree.Declaration getDeclarationNode() {
return declaration;
}
public FindBodyContainerVisitor(Node node) {
this.node=node;
}
@Override
public void visit(Tree.ObjectDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.AttributeGetterDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.AttributeSetterDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.MethodDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.Constructor that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.ClassDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visit(Tree.InterfaceDefinition that) {
Tree.Declaration d = currentDeclaration;
currentDeclaration = that;
super.visit(that);
currentDeclaration = d;
}
@Override
public void visitAny(Node node) {
if (this.node==node) {
declaration=currentDeclaration;
}
if (declaration==null) {
super.visitAny(node);
}
}
}