package org.scribble.del;
import java.util.List;
import org.scribble.ast.ProtocolDecl;
import org.scribble.ast.RoleArgList;
import org.scribble.ast.RoleDeclList;
import org.scribble.ast.ScribNode;
import org.scribble.main.ScribbleException;
import org.scribble.sesstype.name.Role;
import org.scribble.visit.wf.NameDisambiguator;
public class RoleArgListDel extends DoArgListDel
{
public RoleArgListDel()
{
}
@Override
public RoleArgList leaveDisambiguation(ScribNode parent, ScribNode child, NameDisambiguator disamb, ScribNode visited) throws ScribbleException
{
visited = super.leaveDisambiguation(parent, child, disamb, visited);
// Duplicate check not needed for NonRoleArgList
RoleArgList ral = (RoleArgList) visited;
List<Role> roles = ral.getRoles();
//if (roles.size() != new HashSet<>(roles).size())
if (roles.size() != roles.stream().distinct().count())
{
throw new ScribbleException(ral.getSource(), "Duplicate role args: " + roles);
}
return ral;
}
@Override
protected RoleDeclList getParamDeclList(ProtocolDecl<?> pd)
{
return pd.header.roledecls;
}
}