package org.scribble.visit.util;
import org.scribble.ast.ProtocolDecl;
import org.scribble.ast.ScribNode;
import org.scribble.ast.context.ModuleContext;
import org.scribble.main.Job;
import org.scribble.main.ScribbleException;
import org.scribble.sesstype.name.RecVar;
// Collects continues (not recs)
public class RecVarCollector extends NameCollector<RecVar>
{
public RecVarCollector(Job job)
{
super(job);
}
public RecVarCollector(Job job, ModuleContext mcontext)
{
super(job, mcontext);
}
@Override
protected final void offsetSubprotocolEnter(ScribNode parent, ScribNode child) throws ScribbleException
{
super.offsetSubprotocolEnter(parent, child);
if (child instanceof ProtocolDecl<?>)
{
super.clear();
}
child.del().enterRecVarCollection(parent, child, this);
}
@Override
protected ScribNode offsetSubprotocolLeave(ScribNode parent, ScribNode child, ScribNode visited) throws ScribbleException
{
visited = visited.del().leaveRecVarCollection(parent, child, this, visited);
return super.offsetSubprotocolLeave(parent, child, visited);
}
}