move dep expansion into step() and clean up ResolveProposition.pm
[scpubgit/DX.git] / lib / DX / Utils.pm
index 243879f..0cb207d 100644 (file)
@@ -44,9 +44,25 @@ our @VALUE_SET = (TYPE_OF(), INDICES_OF(), CONTENTS_OF());
 
 sub trace { }
 
+sub _expand_dep {
+  my ($type, @path) = @{$_[0]};
+  my @expanded = map {
+    ref() ? @{$_->value_path or return ()} : $_
+  } @path;
+  return [ $type, @expanded ];
+}
+
+sub _expand_deps {
+  [ map _expand_dep($_), @{$_[0]} ]
+}
+
 sub step {
   require DX::Step::ResolveProposition;
-  DX::Step::ResolveProposition->new(@_);
+  my %args = @_;
+  DX::Step::ResolveProposition->new(
+    %args,
+    depends_on => _expand_deps($args{depends_on}),
+  );
 }
 
 sub string {