From 775bd3a08bcc42acaf6fcc790a9cd444a41469ed Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 25 Feb 2022 23:01:08 -0700 Subject: [PATCH] unify '' to [] in unify_complete_string (#1292, #1288) --- src/machine/machine_state_impl.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index 85fac031..5003d14a 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -333,11 +333,20 @@ impl MachineState { pub fn unify_complete_string(&mut self, atom: Atom, value: HeapCellValue) { if let Some(r) = value.as_var() { - self.bind(r, atom_as_cstr_cell!(atom)); + if atom == atom!("") { + self.bind(r, atom_as_cell!(atom!("[]"))); + } else { + self.bind(r, atom_as_cstr_cell!(atom)); + } + return; } read_heap_cell!(value, + (HeapCellValueTag::Atom, (cstr_atom, arity)) if atom == atom!("") => { + debug_assert_eq!(arity, 0); + self.fail = cstr_atom != atom!("[]"); + } (HeapCellValueTag::CStr, cstr_atom) => { self.fail = atom != cstr_atom; } @@ -713,7 +722,6 @@ impl MachineState { pub fn unify(&mut self) { let mut tabu_list: IndexSet<(usize, usize)> = IndexSet::new(); - // self.fail = false; while !(self.pdl.is_empty() || self.fail) { let s1 = self.pdl.pop().unwrap(); -- 2.54.0