package org.scribble.ast.global;
import org.antlr.runtime.tree.CommonTree;
import org.scribble.ast.AstFactoryImpl;
import org.scribble.ast.Continue;
import org.scribble.ast.local.LContinue;
import org.scribble.ast.name.simple.RecVarNode;
import org.scribble.del.ScribDel;
import org.scribble.sesstype.kind.Global;
import org.scribble.sesstype.kind.RecVarKind;
import org.scribble.sesstype.name.Role;
public class GContinue extends Continue<Global> implements GSimpleInteractionNode
{
public GContinue(CommonTree source, RecVarNode recvar)
{
super(source, recvar);
}
public LContinue project(Role self)
{
RecVarNode recvar = (RecVarNode) AstFactoryImpl.FACTORY.SimpleNameNode(this.recvar.getSource(), RecVarKind.KIND, this.recvar.toName().toString()); // clone?
LContinue projection = AstFactoryImpl.FACTORY.LContinue(this.source, recvar);
return projection;
}
@Override
protected GContinue copy()
{
return new GContinue(this.source, this.recvar);
}
@Override
public GContinue clone()
{
RecVarNode rv = this.recvar.clone();
return AstFactoryImpl.FACTORY.GContinue(this.source, rv);
}
@Override
public GContinue reconstruct(RecVarNode recvar)
{
ScribDel del = del();
GContinue gc = new GContinue(this.source, recvar);
gc = (GContinue) gc.del(del);
return gc;
}
// FIXME: shouldn't be needed, but here due to Eclipse bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=436350
@Override
public Global getKind()
{
return GSimpleInteractionNode.super.getKind();
}
}