return undef unless $hyp;
push @events, @these_events;
}
- $hyp = $hyp->but_recheck_for(@events);
- return $hyp;
+ my ($still_resolved, @recheck) = $hyp->resolved_propositions
+ ->but_expire_for(@events);
+ return (
+ $hyp->but(resolved_propositions => $still_resolved),
+ @recheck
+ );
}
sub but_recheck_for {
- my ($self, @events) = @_;
- my ($still_resolved, @recheck) = $self->resolved_propositions
- ->but_expire_for(@events);
- return $self unless @recheck;
+ my ($self, @recheck) = @_;
my $ap = DX::ActionPolicy::LockScope->new(
lock_to_depth => $self->scope->depth,
my $sol_rps = $sol_ss->current_hypothesis->resolved_propositions;
- my $rps = $still_resolved;
+ my $rps = $self->resolved_propositions;
$rps = $rps->with_updated_dependencies_for(
$_, $sol_rps->dependencies_for($_)
sub with_resolution {
my ($self, $prop, $depends, $actions) = @_;
- my $hyp = $self->with_actions(@$actions);
+ (my $hyp, my @recheck) = $self->with_actions(@$actions);
return undef unless $hyp;
+ if (@recheck) {
+ $hyp = $hyp->but_recheck_for(@recheck);
+ return undef unless $hyp;
+ }
$hyp->but(
resolved_propositions => $self->resolved_propositions
->with_resolution_for(