From: Mark Thom Date: Thu, 3 May 2018 23:36:59 +0000 (-0600) Subject: correct sort/keysort refusing [] X-Git-Tag: v0.8.110~477 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=e7c2c2cedd3e23db94979c8206a2f678072d62e4;p=scryer-prolog.git correct sort/keysort refusing [] --- 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 } } }