package org.scribble.del;
import java.util.List;
import org.scribble.ast.HeaderParamDecl;
import org.scribble.ast.HeaderParamDeclList;
import org.scribble.ast.ScribNode;
import org.scribble.main.ScribbleException;
import org.scribble.visit.wf.NameDisambiguator;
public abstract class HeaderParamDeclListDel extends ScribDelBase
{
public HeaderParamDeclListDel()
{
}
// Doing in leave allows the arguments to be individually checked first
@Override
public HeaderParamDeclList<?> leaveDisambiguation(ScribNode parent, ScribNode child, NameDisambiguator disamb, ScribNode visited) throws ScribbleException
{
HeaderParamDeclList<?> pdl = (HeaderParamDeclList<?>) visited;
List<? extends HeaderParamDecl<?>> decls = pdl.getDecls(); // grammar enforces RoleDeclList size > 0
if (decls.size() != decls.stream().map((d) -> d.getDeclName()).distinct().count())
{
throw new ScribbleException(pdl.getSource(), "Duplicate header decls: " + pdl);
}
return pdl;
}
}