package x10.types.constraints.visitors; import x10.constraint.XFailure; import x10.constraint.XTerm; import x10.constraint.XVar; import x10.constraint.visitors.XGraphVisitor; import x10.types.constraints.CConstraint; public class AddInVisitor extends XGraphVisitor { CConstraint c2; XTerm newSelf; XVar cSelf; public AddInVisitor(boolean hideEQV, boolean hideFake, CConstraint c2, XTerm newSelf, XVar cSelf) { super(hideEQV, hideFake); this.c2=c2; this.newSelf = newSelf; this.cSelf = cSelf; } public boolean visitAtomicFormula(XTerm t) { try { t = t.subst(newSelf, cSelf); c2.addTerm(t); return true; } catch (XFailure z) { c2.setInconsistent(); return false; } } public boolean visitEquals(XTerm t1, XTerm t2) { t1 = t1.subst(newSelf, cSelf); t2 = t2.subst(newSelf, cSelf); c2.addBinding(t1, t2); return c2.consistent(); } public boolean visitDisEquals(XTerm t1, XTerm t2) { t1 = t1.subst(newSelf, cSelf); t2 = t2.subst(newSelf, cSelf); c2.addDisBinding(t1, t2); return c2.consistent(); } }