package DX::Step::ResolveProposition;
use DX::Step::EnterRecheck;
+use DX::Step::CompleteResolution;
use DX::Step::Backtrack;
use DX::Utils qw(expand_deps);
] ],
] ]
] ];
- my $ns = do {
- if (my $prop = $old_ss->next_proposition) {
- DX::Step::ConsiderProposition->new(
- proposition => $prop
- )
- } else {
- $old_ss->on_solution_step
- }
- };
+ my $rspace = $self->resolution_space;
my $ss = $old_ss->but(
- next_step => $ns,
- decisions_taken => [
- [ $self->resolution_space, $old_ss ],
- @{$old_ss->decisions_taken}
- ],
+ next_step => DX::Step::CompleteResolution->new(
+ original_search_state => $old_ss,
+ resolution_space => $rspace,
+ )
);
my $old_hyp = $old_ss->current_hypothesis;
(my $hyp, my @recheck) = $old_hyp->with_resolution(
next_step => DX::Step::EnterRecheck->new(
proposition_list => \@recheck,
on_completion_step => $ss->next_step,
- on_failure_step => DX::Step::Backtrack->new,
+ on_failure_step => $rspace->remaining_resolution_space->next_step,
),
);
}