package org.scribble.ast; import org.antlr.runtime.tree.CommonTree; import org.scribble.ast.name.qualified.ModuleNameNode; import org.scribble.main.ScribbleException; import org.scribble.sesstype.kind.ModuleKind; import org.scribble.sesstype.name.ModuleName; import org.scribble.visit.AstVisitor; public class ModuleDecl extends NameDeclNode<ModuleKind> { public ModuleDecl(CommonTree source, ModuleNameNode fullmodname) { super(source, fullmodname); } @Override protected ModuleDecl copy() { return new ModuleDecl(this.source, (ModuleNameNode) this.name); } @Override public ModuleDecl clone() { ModuleNameNode modname = (ModuleNameNode) this.name.clone(); return AstFactoryImpl.FACTORY.ModuleDecl(this.source, modname); } @Override public ModuleDecl visitChildren(AstVisitor nv) throws ScribbleException { ModuleNameNode fullmodname = (ModuleNameNode) visitChild(this.name, nv); return AstFactoryImpl.FACTORY.ModuleDecl(this.source, fullmodname); // cf., reconstruct } @Override public String toString() { return Constants.MODULE_KW + " " + this.name + ";"; } @Override public ModuleName getDeclName() { //return (ModuleName) super.getDeclName(); // Would return full name return ((ModuleName) super.getDeclName()).getSimpleName(); // Uniform with other NameDeclNodes wrt. returning simple name } public ModuleName getFullModuleName() { return (ModuleName) this.name.toName(); } }