AddBoundValue action
[scpubgit/DX.git] / lib / DX / QueryState.pm
index dcc79c7..9cc2249 100644 (file)
@@ -27,7 +27,7 @@ has search_state => (
 
 sub new_search_state_for {
   my ($self, $prop_seq) = @_;
-  my @local_names = map { keys %{$_->introduces_names} }
+  my @local_names = map { keys %{$_->introduced_names} }
                       @{$prop_seq->members};
   my $scope = DX::Scope->new(
     predicates => $self->predicates,
@@ -49,6 +49,7 @@ sub new_search_state_for {
     resolved_propositions => DX::ResolvedPropositionSet->new_empty,
     outstanding_propositions => $prop_seq->members,
     actions => [],
+    action_applications => [],
     action_policy => DX::ActionPolicy::Allow->new,
   );
   return DX::SearchState->new(
@@ -60,14 +61,21 @@ sub new_search_state_for {
 sub with_additional_proposition {
   my ($self, $prop) = @_;
   my $prop_seq = $self->proposition_sequence
-                      ->but_append_proposition($prop);
+                      ->with_additional_proposition($prop);
   my $sol_ss = $self->new_search_state_for($prop_seq)
                     ->find_solution;
-  die "No solution" unless $sol_ss;
+  die "No solution\n" unless $sol_ss;
   $self->but(
     proposition_sequence => $prop_seq,
     search_state => $sol_ss,
   );
 }
 
+sub with_forced_backtrack {
+  my ($self) = @_;
+  my $next_ss = $self->search_state->find_next_solution;
+  die "No next solution\n" unless $next_ss;
+  $self->but(search_state => $next_ss);
+}
+
 1;