package coreVisitors;
import tools.Assertions;
import ast.ExpCore;
import ast.ExpCore.*;
public class ReplaceX extends CloneVisitor{
ExpCore toReplace;
String toBeReplaced;
//boolean done=false;
ReplaceX(ExpCore toReplace,String toBeReplaced){this.toReplace=toReplace;this.toBeReplaced=toBeReplaced;}
public ExpCore visit(WalkBy s) {throw Assertions.codeNotReachable();}
public ExpCore visit(ClassB s) {return s;}
public ExpCore visit(X s) {
if(s.getInner().equals(toBeReplaced)){
// if(done){throw Assertions.codeNotReachable();}
// this.done=true;
return toReplace;
}
return super.visit(s);
}
public static ExpCore of(ExpCore ctx,ExpCore toReplace,String toBeReplaced){
ReplaceX v=new ReplaceX(toReplace,toBeReplaced);
// if(!v.done){throw Assertions.codeNotReachable();}
return ctx.accept(v);
}
}