package org.scribble.ast.name.qualified;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.AstFactoryImpl;
import org.scribble.sesstype.kind.ModuleKind;
import org.scribble.sesstype.name.ModuleName;
import org.scribble.sesstype.name.PackageName;
public class ModuleNameNode extends QualifiedNameNode<ModuleKind>
{
public ModuleNameNode(CommonTree source, String... ns)
{
super(source, ns);
}
@Override
protected ModuleNameNode copy()
{
return new ModuleNameNode(this.source, this.elems);
}
@Override
public ModuleNameNode clone()
{
return (ModuleNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(this.source, ModuleKind.KIND, this.elems);
}
@Override
public ModuleName toName()
{
ModuleName modname = new ModuleName(getLastElement());
return isPrefixed()
? new ModuleName(new PackageName(getPrefixElements()), modname)
: modname;
}
@Override
public boolean equals(Object o)
{
if (this == o)
{
return true;
}
if (!(o instanceof ModuleNameNode))
{
return false;
}
return ((ModuleNameNode) o).canEqual(this) && super.equals(o);
}
@Override
public boolean canEqual(Object o)
{
return o instanceof ModuleNameNode;
}
@Override
public int hashCode()
{
int hash = 409;
hash = 31 * hash + this.elems.hashCode();
return hash;
}
}