throw errors on cycles in sort/2 and keysort/2 (#1350 and #1351)

This commit is contained in:
Mark Thom
2022-03-13 10:48:03 -06:00
parent 5463c1d47f
commit c55bfa2c6e
2 changed files with 5 additions and 5 deletions

View File

@@ -792,7 +792,7 @@ impl MachineState {
let err = self.instantiation_error();
return Err(self.error_form(err, stub_gen()))
}
CycleSearchResult::NotList(..) => {
CycleSearchResult::NotList(..) | CycleSearchResult::Cyclic(_) => {
let err = self.type_error(ValidType::List, list);
return Err(self.error_form(err, stub_gen()));
}
@@ -800,7 +800,7 @@ impl MachineState {
};
match BrentAlgState::detect_cycles(&self.heap, sorted) {
CycleSearchResult::NotList(..) if !sorted.is_var() => {
CycleSearchResult::NotList(..) | CycleSearchResult::Cyclic(_) if !sorted.is_var() => {
let err = self.type_error(ValidType::List, sorted);
Err(self.error_form(err, stub_gen()))
}
@@ -812,7 +812,7 @@ impl MachineState {
let stub_gen = || functor_stub(atom!("keysort"), 2);
match BrentAlgState::detect_cycles(&self.heap, list) {
CycleSearchResult::NotList(..) if !list.is_var() => {
CycleSearchResult::NotList(..) | CycleSearchResult::Cyclic(_) if !list.is_var() => {
let err = self.type_error(ValidType::List, list);
Err(self.error_form(err, stub_gen()))
}
@@ -878,7 +878,7 @@ impl MachineState {
let err = self.instantiation_error();
Err(self.error_form(err, stub_gen()))
}
CycleSearchResult::NotList(..) => {
CycleSearchResult::NotList(..) | CycleSearchResult::Cyclic(_) => {
let err = self.type_error(ValidType::List, pairs);
Err(self.error_form(err, stub_gen()))
}