self.state_stack.push(TokenOrRedirect::Atom(atom!("...")));
self.state_stack.push(TokenOrRedirect::HeadTailSeparator);
} else if end_cell != empty_list_as_cell!() {
- if value.get_tag() != HeapCellValueTag::CStr {
+ if end_h != h+1 && value.get_tag() != HeapCellValueTag::CStr {
self.iter.pop_stack();
self.iter.push_stack(h+1);
}
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()));
}
};
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()))
}
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()))
}
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()))
}