correct sort/keysort refusing []

This commit is contained in:
Mark Thom
2018-05-03 17:36:59 -06:00
parent df1421dae8
commit e7c2c2cedd
2 changed files with 9 additions and 4 deletions

View File

@@ -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(())
}
}

View File

@@ -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
}
}
}