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