package org.scribble.ast.name.qualified; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.AstFactoryImpl; import org.scribble.ast.MessageNode; import org.scribble.sesstype.kind.SigKind; import org.scribble.sesstype.name.MessageSigName; public class MessageSigNameNode extends MemberNameNode<SigKind> implements MessageNode { public MessageSigNameNode(CommonTree source, String... elems) { super(source, elems); } @Override public MessageNode project() { return this; } @Override protected MessageSigNameNode copy() { return new MessageSigNameNode(this.source, this.elems); } @Override public MessageSigNameNode clone() { return (MessageSigNameNode) AstFactoryImpl.FACTORY.QualifiedNameNode(this.source, SigKind.KIND, this.elems); } @Override public MessageSigName toName() { MessageSigName membname = new MessageSigName(getLastElement()); return isPrefixed() ? new MessageSigName(getModuleNamePrefix(), membname) : membname; } @Override public boolean isMessageSigNameNode() { return true; } @Override public MessageSigName toMessage() // Difference between toName and toMessage is scope? does that make sense? { return toName(); } @Override public MessageSigName toArg() { return toMessage(); } @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof MessageSigNameNode)) { return false; } return ((MessageSigNameNode) o).canEqual(this) && super.equals(o); } @Override public boolean canEqual(Object o) { return o instanceof MessageSigNameNode; } @Override public int hashCode() { int hash = 421; hash = 31 * hash + this.elems.hashCode(); return hash; } }