From e7c2c2cedd3e23db94979c8206a2f678072d62e4 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Thu, 3 May 2018 17:36:59 -0600 Subject: [PATCH] correct sort/keysort refusing [] --- src/prolog/machine/machine_errors.rs | 2 +- src/prolog/machine/machine_state_impl.rs | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/prolog/machine/machine_errors.rs b/src/prolog/machine/machine_errors.rs index 01a699fd..d2aa8702 100644 --- a/src/prolog/machine/machine_errors.rs +++ b/src/prolog/machine/machine_errors.rs @@ -32,7 +32,7 @@ impl MachineState { match self.detect_cycles(usize::max_value(), sorted.clone()) { CycleSearchResult::NotList if !sorted.is_ref() => - Err(self.error_form(self.type_error(ValidType::List, sorted))), + Err(self.error_form(self.type_error(ValidType::List, sorted))), _ => Ok(()) } } diff --git a/src/prolog/machine/machine_state_impl.rs b/src/prolog/machine/machine_state_impl.rs index b6f0d1d3..e6ee1a28 100644 --- a/src/prolog/machine/machine_state_impl.rs +++ b/src/prolog/machine/machine_state_impl.rs @@ -1724,8 +1724,10 @@ impl MachineState { }, Addr::HeapCell(_) | Addr::StackCell(..) => Err(self.error_form(self.instantiation_error())), - addr => - Err(self.error_form(self.type_error(ValidType::List, addr))) + Addr::Con(Constant::EmptyList) => + Ok(vec![]), + _ => + Err(self.error_form(self.type_error(ValidType::List, a1))) } } @@ -1781,7 +1783,10 @@ impl MachineState { }, HeapCellValue::Addr(Addr::Con(Constant::EmptyList)) => return CycleSearchResult::ProperList(steps), - _ => return CycleSearchResult::PartialList(steps, hare) + HeapCellValue::Addr(Addr::HeapCell(_)) | HeapCellValue::Addr(Addr::StackCell(..)) => + return CycleSearchResult::PartialList(steps, hare), + _ => + return CycleSearchResult::NotList } } } -- 2.54.0