From: Mark Thom Date: Sun, 10 May 2020 20:00:49 +0000 (-0600) Subject: correct failed partial string matching (#483) X-Git-Tag: v0.8.123~47 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=50c0abc78696e437f97ec5a80b40a4ebef9c898e;p=scryer-prolog.git correct failed partial string matching (#483) --- diff --git a/src/prolog/machine/machine_state_impl.rs b/src/prolog/machine/machine_state_impl.rs index aa7cb911..a64685c5 100644 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@ -796,7 +796,7 @@ impl MachineState { if let Some(var) = addr.as_var() { self.bind(var, Addr::EmptyList); } else { - self.fail = true; + self.fail = addr != Addr::EmptyList; } } } @@ -804,9 +804,7 @@ impl MachineState { } Some(prefix_len) => { match heap_pstr_iter.focus() { - addr @ Addr::AttrVar(_) | - addr @ Addr::StackCell(..) | - addr @ Addr::HeapCell(_) => { + addr if addr.is_ref() => { let h = self.heap.h(); let pstr_addr =