always print variable bindings before names (#865)
This commit is contained in:
@@ -831,21 +831,16 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
match self.heap_locs.get(&addr).cloned() {
|
match self.heap_locs.get(&addr).cloned() {
|
||||||
Some(var) => {
|
Some(var) if addr.is_ref() => {
|
||||||
if !self.printed_vars.contains(&addr) {
|
iter.stack().pop();
|
||||||
self.printed_vars.insert(addr);
|
|
||||||
return iter.next();
|
|
||||||
} else {
|
|
||||||
iter.stack().pop();
|
|
||||||
|
|
||||||
push_space_if_amb!(self, &var, {
|
push_space_if_amb!(self, &var, {
|
||||||
self.append_str(&var);
|
self.append_str(&var);
|
||||||
});
|
});
|
||||||
|
|
||||||
return None;
|
return None;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
None => {
|
var_opt => {
|
||||||
let offset = match functor_location(&addr) {
|
let offset = match functor_location(&addr) {
|
||||||
Some(offset) => offset,
|
Some(offset) => offset,
|
||||||
None => {
|
None => {
|
||||||
@@ -858,17 +853,32 @@ impl<'a, Outputter: HCValueOutputter> HCPrinter<'a, Outputter> {
|
|||||||
if reps > 0 {
|
if reps > 0 {
|
||||||
self.cyclic_terms.insert(addr, reps - 1);
|
self.cyclic_terms.insert(addr, reps - 1);
|
||||||
} else {
|
} else {
|
||||||
push_space_if_amb!(self, "...", {
|
match var_opt {
|
||||||
self.append_str("...");
|
Some(var) => {
|
||||||
});
|
push_space_if_amb!(self, &var, {
|
||||||
|
self.append_str(&var);
|
||||||
|
});
|
||||||
|
|
||||||
iter.stack().pop();
|
iter.stack().pop();
|
||||||
self.cyclic_terms.insert(addr, 2);
|
}
|
||||||
|
None => {
|
||||||
|
push_space_if_amb!(self, "...", {
|
||||||
|
self.append_str("...");
|
||||||
|
});
|
||||||
|
|
||||||
|
iter.stack().pop();
|
||||||
|
self.cyclic_terms.insert(addr, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
} else if self.machine_st.is_cyclic_term(addr.clone()) {
|
} else if self.machine_st.is_cyclic_term(addr.clone()) {
|
||||||
self.cyclic_terms.insert(addr, 2);
|
if var_opt.is_some() {
|
||||||
|
self.cyclic_terms.insert(addr, 0);
|
||||||
|
} else {
|
||||||
|
self.cyclic_terms.insert(addr, 2);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self.record_children_as_non_cyclic(&addr);
|
self.record_children_as_non_cyclic(&addr);
|
||||||
self.non_cyclic_terms.insert(offset);
|
self.non_cyclic_terms.insert(offset);
|
||||||
|
|||||||
Reference in New Issue
Block a user