summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2008-02-28 17:21:35 -0600
committerLuke Kanies <luke@madstop.com>2008-02-28 17:21:35 -0600
commitfd1573fdb696803deb7a220d6bfd06b8afff55fb (patch)
tree71a0f02157d875e6d33af38367d4b2718bcd987b /lib/puppet/parser/ast
parentb79d15ea893f123f4968879b84aea36eb118712a (diff)
downloadpuppet-fd1573fdb696803deb7a220d6bfd06b8afff55fb.tar.gz
puppet-fd1573fdb696803deb7a220d6bfd06b8afff55fb.tar.xz
puppet-fd1573fdb696803deb7a220d6bfd06b8afff55fb.zip
Fixed #1047 -- Puppet's parser no longer changes the order
in which statements are evaluated, which means that case statements can now set variables that are used by other variables.
Diffstat (limited to 'lib/puppet/parser/ast')
-rw-r--r--lib/puppet/parser/ast/astarray.rb24
1 files changed, 3 insertions, 21 deletions
diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb
index b66fd6bba..8f09aa922 100644
--- a/lib/puppet/parser/ast/astarray.rb
+++ b/lib/puppet/parser/ast/astarray.rb
@@ -16,16 +16,6 @@ class Puppet::Parser::AST
# Evaluate our children.
def evaluate(scope)
- rets = nil
- # We basically always operate declaratively, and when we
- # do we need to evaluate the settor-like statements first. This
- # is basically variable and type-default declarations.
- # This is such a stupid hack. I've no real idea how to make a
- # "real" declarative language, so I hack it so it looks like
- # one, yay.
- settors = []
- others = []
-
# Make a new array, so we don't have to deal with the details of
# flattening and such
items = []
@@ -34,22 +24,14 @@ class Puppet::Parser::AST
@children.each { |child|
if child.instance_of?(AST::ASTArray)
child.each do |ac|
- if ac.class.settor?
- settors << ac
- else
- others << ac
- end
+ items << ac
end
else
- if child.class.settor?
- settors << child
- else
- others << child
- end
+ items << child
end
}
- rets = [settors, others].flatten.collect { |child|
+ rets = items.flatten.collect { |child|
child.safeevaluate(scope)
}
return rets.reject { |o| o.nil? }