package dk.brics.jsrefactoring.changes; import java.util.Collections; import java.util.Set; import dk.brics.jsparser.node.ABlock; import dk.brics.jsparser.node.PStmt; import dk.brics.jsparser.node.Start; import dk.brics.jsrefactoring.PrettyPrinter; /** * AST change describing a new statement being inserted into a block. * * @author max.schaefer@comlab.ox.ac.uk * */ public class InsertStmtIntoBlock extends Change { private ABlock block; private int index; private PStmt stmt; public InsertStmtIntoBlock(ABlock block, int index, PStmt stmt) { super(); this.block = block; this.index = index; this.stmt = stmt; } @Override public Set<Start> getAffectedScripts() { return Collections.singleton(block.getRoot()); } @Override public void perform() { PrettyPrinter.insertStmtIntoBlock(block, index, stmt); } @Override public <Q, A> A apply(ChangeVisitor<Q, A> v, Q arg) { return v.caseInsertStmtIntoBlock(this, arg); } }