sma backtracking (smart will be later ;)
[scpubgit/DX.git] / lib / DX / Step / FailRecheck.pm
1 package DX::Step::FailRecheck;
2
3 use DX::Class;
4
5 with 'DX::Role::Step';
6
7 has resume_search_state => (is => 'ro', isa => SearchState, required => 1);
8
9 has resolution_space => (is => 'ro', isa => ResolutionSpace, required => 1);
10
11 has exhaustion_depends_on => (is => 'ro', isa => DependencyList);
12
13 sub apply_to {
14   my ($self, $old_ss) = @_;
15   trace recheck => [ statement => [ [ symbol => 'fail_recheck' ] ] ];
16   trace recheck => [ 'leave_block' ];
17   return $self->resume_search_state->but(
18     next_step
19       => $self->resolution_space
20               ->remaining_resolution_space
21               ->with_geometry_dependencies($self->exhaustion_depends_on)
22               ->next_step
23   );
24 }
25
26 1;