pass rspace to backtrack (as yet unused), tweak DependencyMap API
[scpubgit/DX.git] / lib / DX / DependencyMap.pm
index d1b8eb2..bd4707d 100644 (file)
@@ -16,11 +16,12 @@ sub new_empty {
   $class->new(deps => {}, revdeps => {});
 }
 
-sub with_entry_for {
+sub with_dependencies_for {
   my ($self, $for_id, $deps_for) = @_;
+  my $old_revdeps = $self->revdeps;
   my $new_revdeps = {
-    %{$self->revdeps},
-    $for_id => $deps_for,
+    %{$old_revdeps},
+    $for_id => [ @{$old_revdeps->{$for_id}||[]}, @$deps_for ],
   };
   my $new_deps = $self->_merge_deps_for(
     $self->deps, $for_id, @$deps_for
@@ -77,7 +78,7 @@ sub _mangle_deps {
   return $root->[0];
 }
 
-sub _dependents_of {
+sub dependents_of {
   my ($self, $event) = @_;
   my ($type, @path) = @$event;
   my $root = [ $self->deps ];
@@ -114,7 +115,7 @@ sub _dependents_of {
 sub but_expire_dependents_of {
   my ($self, @events) = @_;
   my @expired = keys %{{
-    map +($_ => 1), map $self->_dependents_of($_), @events
+    map +($_ => 1), map $self->dependents_of($_), @events
   }};
   # Didn't expire anything? Don't clone self
   return $self unless @expired;