correct new copier bug
This commit is contained in:
@@ -84,7 +84,6 @@ pub(crate) trait CopierTarget
|
||||
match rd.clone() {
|
||||
Addr::HeapCell(hc) if hc >= old_h => {
|
||||
self[threshold] = HeapCellValue::Addr(rd);
|
||||
scan += 1;
|
||||
},
|
||||
addr @ Addr::HeapCell(..) | addr @ Addr::StackCell(..) => {
|
||||
if rd == addr {
|
||||
@@ -92,8 +91,6 @@ pub(crate) trait CopierTarget
|
||||
} else {
|
||||
self[threshold] = HeapCellValue::Addr(addr);
|
||||
}
|
||||
|
||||
scan += 1;
|
||||
},
|
||||
_ => {
|
||||
trail.push((Ref::HeapCell(a), self[a].clone()));
|
||||
|
||||
@@ -1484,7 +1484,11 @@ fn test_queries_on_builtins()
|
||||
assert_prolog_failure!(&mut wam, "?- duplicate_term(g(X), f(X)).");
|
||||
assert_prolog_success!(&mut wam, "?- duplicate_term(f(X), f(X)).",
|
||||
[["X = _1"]]);
|
||||
|
||||
assert_prolog_success!(&mut wam, "?- duplicate_term([[[[X, Y], Y], X]], Term).",
|
||||
[["Term = [[[[_22, _26], _26], _22]]", "X = _2", "Y = _0"]]);
|
||||
assert_prolog_success!(&mut wam, "?- duplicate_term([X, [Y, [X]]], Term).",
|
||||
[["Term = [_12, [_16, [_12]]]", "X = _0", "Y = _4"]]);
|
||||
|
||||
// test duplicate_term on cyclic terms.
|
||||
assert_prolog_failure!(&mut wam, "?- X = g(X, Y), Y = f(X), duplicate_term(Y, g(Z)).");
|
||||
assert_prolog_success!(&mut wam, "?- X = g(X, Y), Y = f(X), duplicate_term(Y, f(Z)).",
|
||||
|
||||
Reference in New Issue
Block a user