use of ast.ExpCore._void in project L42 by ElvisResearchGroup.
the class InjectionOnCore method visit.
public ExpCore visit(Expression.ClassB s) {
Doc doc1 = s.getDoc1();
List<Ast.Type> supertypes = s.getSupertypes();
boolean isInterface = false;
if (s.getH() instanceof Ast.ConcreteHeader) {
throw Assertions.codeNotReachable();
}
if (s.getH() instanceof Ast.InterfaceHeader) {
isInterface = true;
}
List<Member> members = new ArrayList<>();
for (ast.Expression.ClassB.Member mi : s.getMs()) {
members.add(mi.match(m -> new ClassB.NestedClass(m.getDoc(), m.getName(), lift(m.getInner()), m.getP()), m -> new ClassB.MethodImplemented(m.getDoc(), m.getS(), lift(m.getInner()), m.getP()), m -> {
Doc mdoc = m.getDoc();
Ast.MethodSelector ms = m.getMs();
MethodType mt = m.getMt();
return new ClassB.MethodWithType(mdoc, ms, mt, lift(m.getInner()), m.getP());
}));
}
ClassB result = new ClassB(doc1, isInterface, supertypes, members, s.getP(), Phase.None, 0);
return result;
}
use of ast.ExpCore._void in project L42 by ElvisResearchGroup.
the class InjectionOnCore method visit.
public ExpCore visit(Expression.MCall s) {
assert !s.getPs().getE().isPresent() : s;
ExpCore receiver = s.getReceiver().accept(this);
String name = s.getName();
Doc doc = s.getDoc();
List<String> xs = s.getPs().getXs();
List<ExpCore> es = new ArrayList<>();
for (Expression e : s.getPs().getEs()) {
es.add(e.accept(this));
}
return new MCall(receiver, MethodSelector.of(name, xs), doc, es, s.getP());
}
use of ast.ExpCore._void in project L42 by ElvisResearchGroup.
the class CtxL method equals.
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
CtxL other = (CtxL) obj;
ExpCore oE = other.fillHole(new ExpCore.WalkBy());
ExpCore thisE = this.fillHole(new ExpCore.WalkBy());
return thisE.equals(oE);
}
use of ast.ExpCore._void in project L42 by ElvisResearchGroup.
the class CtxL method _split.
public static CtxL _split(ExpCore.ClassB l) {
int pos = firstNotCompiled(l.getMs());
if (pos == l.getMs().size()) {
return null;
}
Member m = l.getMs().get(pos);
ExpCore inner = m.getInner();
boolean metaReady = m instanceof NestedClass && IsCompiled.of(m.getInner());
CtxC innerSplit;
if (metaReady) {
innerSplit = CtxC.hole(inner);
} else {
innerSplit = CtxC.split(inner);
}
return new CtxL(l, pos, innerSplit);
}
use of ast.ExpCore._void in project L42 by ElvisResearchGroup.
the class Norm method normMwt.
protected MethodWithType normMwt(Program p, MethodWithType mwt) {
MethodType mt = mwt.getMt();
Optional<ExpCore> e = mwt.get_inner().map(e1 -> e1.accept(new CloneVisitor() {
@Override
public ExpCore visit(ClassB cb) {
return norm(p.evilPush(cb));
}
}));
return mwt.withMt(mt).with_inner(e);
}
Aggregations