diff --git a/src/Tree/Optimizer.nqp b/src/Tree/Optimizer.nqp index 3e59d61..66ddcdc 100644 --- a/src/Tree/Optimizer.nqp +++ b/src/Tree/Optimizer.nqp @@ -35,17 +35,8 @@ method find-pass ($name) { method register ($transformation, *%adverbs) { my $pass := Tree::Optimizer::Pass.new($transformation, |%adverbs); %!passes{$pass.name} := $pass; - my $depends-on := %adverbs; - if $depends-on { - my @dependencies; - if pir::isa__IPP($depends-on, String) { - @dependencies := pir::split__PSS(' ', $depends-on); - } else { - @dependencies := $depends-on; - } - for @dependencies -> $dependency { - self.add-dependency($pass.name, $dependency); - } + for $pass.dependencies -> $dependency { + self.add-dependency($pass.name, $dependency); } } diff --git a/src/Tree/Optimizer/Pass.nqp b/src/Tree/Optimizer/Pass.nqp index b160e30..9feb081 100644 --- a/src/Tree/Optimizer/Pass.nqp +++ b/src/Tree/Optimizer/Pass.nqp @@ -1,10 +1,14 @@ class Tree::Optimizer::Pass; +has @!dependencies; has $!name; has $!recursive; has $!transformation; has $!when; +our multi method dependencies () { @!dependencies; } +our multi method dependencies (@deps) { @!dependencies := @deps; } + our multi method name () { $!name; } our multi method name ($name) { $!name := $name; } @@ -29,11 +33,17 @@ my $current-gen-name := 0; sub gen-name () { '__unnamed_' ~ $current-gen-name++; } -method BUILD (:$transformation, :$name, :$recursive, :$when, *%ignored) { +method BUILD (:$transformation, :$name, :$recursive, :$when, *%rest) { $!name := $name || gen-name(); $!recursive := $recursive || 0; $!transformation := $transformation; $!when := $when; + my $depends-on := %rest; + if $depends-on { + @!dependencies := (pir::isa__IPP($depends-on, String) + ?? [ $depends-on ] + !! $depends-on); + } } method run ($tree) {