use of mb.nabl2.terms.ITerm in project nabl by metaborg.
the class TermMultisetTest method testContainsOriginalAndUnifiedTerm.
@Test
public void testContainsOriginalAndUnifiedTerm() throws UnificationException {
final ITermVar v1 = B.newVar("", "v1");
final ITerm t1 = B.newInt(1);
final ITerm t2 = B.newTuple(v1);
terms.add(t2, unifier);
assertEquals(1, terms.varSet().size());
IUnifier.Immutable result = unifier.unify(v1, t1);
terms.update(result.varSet(), unifier);
assertTrue(terms.contains(t2, unifier));
assertTrue(terms.contains(unifier.findTerm(t2), unifier));
assertEquals(0, terms.varSet().size());
}
use of mb.nabl2.terms.ITerm in project nabl by metaborg.
the class TermMultisetTest method testAdd2AtOnce.
@Test
public void testAdd2AtOnce() {
final ITerm t1 = B.newInt(1);
terms.add(t1, 2, unifier);
assertEquals(0, terms.varSet().size());
assertEquals(1, terms.elementSet().size());
assertEquals(2, terms.count(t1, unifier));
}
use of mb.nabl2.terms.ITerm in project nabl by metaborg.
the class EqualityComponent method solve.
// ------------------------------------------------------------------------------------------------------//
private Optional<SolveResult> solve(CEqual constraint) {
final ITerm left = constraint.getLeft();
final ITerm right = constraint.getRight();
try {
final IUnifier.Transient unifier = this.unifier.get().melt();
final IUnifier.Immutable unifyResult = unifier.unify(left, right);
final SolveResult solveResult = ImmutableSolveResult.builder().unifierDiff(unifyResult).build();
this.unifier.set(unifier.freeze());
return Optional.of(solveResult);
} catch (UnificationException ex) {
final MessageContent content = MessageContent.builder().append("Cannot unify ").append(left).append(" with ").append(right).build();
final IMessageInfo message = (constraint.getMessageInfo().withDefaultContent(content));
final SolveResult solveResult = SolveResult.messages(message);
return Optional.of(solveResult);
}
}
use of mb.nabl2.terms.ITerm in project nabl by metaborg.
the class AbstractApplTerm method toString.
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getOp());
sb.append("(");
boolean first = true;
for (ITerm arg : getArgs()) {
if (first) {
first = false;
} else {
sb.append(",");
}
sb.append(arg.toString());
}
sb.append(")");
return sb.toString();
}
use of mb.nabl2.terms.ITerm in project nabl by metaborg.
the class TermIndexTest method testSerializeSpecialized.
@Test
public void testSerializeSpecialized() throws Exception {
ITerm t = ImmutableTermIndex.of("Hello, world!", 42);
byte[] b1 = serialize(t);
byte[] b2 = serialize(deserialize(b1));
assertTrue(Arrays.equals(b1, b2));
}
Aggregations