Commit | Line | Data |
55131db4 |
1 | package DX::Step::Backtrack; |
2 | |
3 | use DX::Class; |
4 | |
5 | with 'DX::Role::Step'; |
6 | |
d6b0c811 |
7 | #has resolution_space => (is => 'ro', isa => ResolutionSpace, required => 1); |
8 | |
55131db4 |
9 | sub apply_to { |
10 | my ($self, $ss) = @_; |
5b6cab1b |
11 | trace backtrack => [ statement => [ [ symbol => 'backtrack' ] ] ]; |
1c02730b |
12 | foreach my $adj (@{$ss->decisions_taken}) { |
13 | my ($rspace_was, $ss_was) = @$adj; |
b63c427e |
14 | next unless @{$rspace_was->remaining_resolution_space->members}; |
c99dbb05 |
15 | trace rspace => [ statement => [ |
16 | [ symbol => 'remaining' ], |
17 | @{$rspace_was->remaining_resolution_space->for_deparse->[1]} |
18 | ] ]; |
1c02730b |
19 | return $ss_was->but( |
20 | next_step => $rspace_was->remaining_resolution_space->next_step |
21 | ); |
76329453 |
22 | } |
23 | return $ss->but(next_step => $ss->on_exhaustion_step); |
55131db4 |
24 | } |
25 | |
26 | 1; |