From: Mark Thom Date: Sun, 12 Apr 2020 05:08:15 +0000 (-0600) Subject: recognize empty lists as partial strings (#328) X-Git-Tag: v0.8.119~12 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=97d8d079476a7f2f4ef03170cc7449edfdda9a9b;p=scryer-prolog.git recognize empty lists as partial strings (#328) --- diff --git a/src/prolog/machine/system_calls.rs b/src/prolog/machine/system_calls.rs index 9083e275..f1004193 100644 --- a/src/prolog/machine/system_calls.rs +++ b/src/prolog/machine/system_calls.rs @@ -1196,7 +1196,21 @@ impl MachineState { } } &SystemClauseType::IsPartialString => { - let mut heap_pstr_iter = self.heap_pstr_iter(self[temp_v!(1)]); + let addr = self.store(self.deref(self[temp_v!(1)])); + + match addr { + Addr::EmptyList => { + return return_from_clause!(self.last_call, self); + } + Addr::AttrVar(_) | Addr::HeapCell(_) | Addr::StackCell(..) => { + self.fail = true; + return Ok(()); + } + _ => { + } + } + + let mut heap_pstr_iter = self.heap_pstr_iter(addr); while let Some(_) = heap_pstr_iter.next() {}