has current_search_state => (
is => 'ro', isa => SearchState, required => 1,
handles => [ qw(
- current_hypothesis next_step propositions alternatives
+ current_hypothesis next_step propositions
) ],
);
sub force_backtrack {
my ($self) = @_;
my $new_ss = $self->current_search_state->force_backtrack;
- return undef unless $new_ss;
+ # XXX infinite loop without the next line and I'm unsure why we don't
+ # get a loop-ending undef from elsewhere if the backtrack failed
+ return undef unless $new_ss->next_step;
return $self->but(current_search_state => $new_ss);
}