package org.scribble.del;
import org.scribble.ast.RoleDecl;
import org.scribble.ast.ScribNode;
import org.scribble.main.ScribbleException;
import org.scribble.sesstype.name.Role;
import org.scribble.visit.wf.NameDisambiguator;
import org.scribble.visit.wf.WFChoiceChecker;
public class RoleDeclDel extends ScribDelBase
{
@Override
public void enterDisambiguation(ScribNode parent, ScribNode child, NameDisambiguator disamb) throws ScribbleException
{
RoleDecl rd = (RoleDecl) child;
disamb.addRole(rd.getDeclName()); // Could check distinct here, but doing it uniformly in HeaderParamDeclListDel
}
@Override
public RoleDecl leaveInlinedWFChoiceCheck(ScribNode parent, ScribNode child, WFChoiceChecker checker, ScribNode visited) throws ScribbleException
{
RoleDecl rd = (RoleDecl) visited;
Role role = rd.getDeclName();
// enabled even for explicit connection protocols: otherwise no way to bootstrap initial connection(s)
checker.pushEnv(checker.popEnv().enableRoleForRootProtocolDecl(role));
return (RoleDecl) super.leaveInlinedWFChoiceCheck(parent, child, checker, rd);
}
}