package is.L42.connected.withSafeOperators;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import coreVisitors.FromInClass;
import ast.Ast.C;
import ast.Ast.Doc;
import ast.Ast.Path;
import ast.Ast.Stage;
import ast.Ast;
import ast.ExpCore;
import ast.ExpCore.ClassB;
import ast.ExpCore.ClassB.Member;
class Push {
//never wrong
//assumes s well formed class name
static ClassB pushOne(ClassB in,Ast.C s){
Path p=Path.outer(1);
ClassB cb=(ClassB)FromInClass.of(in, p);
List<Member> ms=Collections.singletonList(new ClassB.NestedClass(Doc.empty(),s,cb,null));
return ClassB.membersClass(ms,cb.getP(),cb.getPhase());
}
//could be more efficient if directly implemented
static ClassB pushMany(ClassB in,List<Ast.C>cs){
assert !cs.isEmpty();
cs=new ArrayList<>(cs);
Collections.reverse(cs);
for(Ast.C s:cs){
in=pushOne(in,s);
}
return in;
}
}