31 lines
694 B
Plaintext
31 lines
694 B
Plaintext
|
process main {
|
||
|
var("0") x;
|
||
|
process_manager() mgr;
|
||
|
|
||
|
var("false") backtrack_check;
|
||
|
backtrack_point() point;
|
||
|
If (backtrack_check) {
|
||
|
val_equal(x, "2") a; # must not have rebound temporarily to A during backtracking
|
||
|
assert(a);
|
||
|
exit("0");
|
||
|
};
|
||
|
|
||
|
multiprovide("A");
|
||
|
mgr->start("t1", "t1", {});
|
||
|
val_equal(x, "1") a; # must have bound to A immediately
|
||
|
assert(a);
|
||
|
|
||
|
multiprovide("B") mgr;
|
||
|
val_equal(x, "2") a; # must have rebound to B immediately
|
||
|
assert(a);
|
||
|
|
||
|
backtrack_check->set("true");
|
||
|
point->go();
|
||
|
}
|
||
|
|
||
|
template t1 {
|
||
|
multidepend({"B", "A"}) dep;
|
||
|
num_add(dep.x, "1") new_x;
|
||
|
dep.x->set(new_x);
|
||
|
}
|