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; |
c99dbb05 |
14 | trace rspace => [ statement => [ |
15 | [ symbol => 'remaining' ], |
16 | @{$rspace_was->remaining_resolution_space->for_deparse->[1]} |
17 | ] ]; |
1c02730b |
18 | return $ss_was->but( |
19 | next_step => $rspace_was->remaining_resolution_space->next_step |
20 | ); |
76329453 |
21 | } |
22 | return $ss->but(next_step => $ss->on_exhaustion_step); |
55131db4 |
23 | } |
24 | |
25 | 1; |