summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-08-22 18:03:55 -0500
committerLuke Kanies <luke@madstop.com>2007-08-22 18:03:55 -0500
commit0682d7e473cfd8f2fe6bee9eae0868b846fd0d50 (patch)
treefb66cc4c81e95ee42905410310095b9a8ae23ecc /lib/puppet/parser/ast
parentec50484518425ec8ac36f89b087beb27d5a3d2c8 (diff)
parent8b3361afae35cfb65754d7bd9aff5b820ed714f0 (diff)
downloadpuppet-0682d7e473cfd8f2fe6bee9eae0868b846fd0d50.tar.gz
puppet-0682d7e473cfd8f2fe6bee9eae0868b846fd0d50.tar.xz
puppet-0682d7e473cfd8f2fe6bee9eae0868b846fd0d50.zip
Merge branch 'multi_env'
Diffstat (limited to 'lib/puppet/parser/ast')
-rw-r--r--lib/puppet/parser/ast/astarray.rb63
-rw-r--r--lib/puppet/parser/ast/collection.rb2
-rw-r--r--lib/puppet/parser/ast/component.rb2
-rw-r--r--lib/puppet/parser/ast/hostclass.rb6
4 files changed, 34 insertions, 39 deletions
diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb
index a0bd5bf89..c0212f919 100644
--- a/lib/puppet/parser/ast/astarray.rb
+++ b/lib/puppet/parser/ast/astarray.rb
@@ -21,45 +21,38 @@ class Puppet::Parser::AST
# 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.
- if scope.declarative?
- # 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 = []
+ # 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 = []
-
- # First clean out any AST::ASTArrays
- @children.each { |child|
- if child.instance_of?(AST::ASTArray)
- child.each do |ac|
- if ac.class.settor?
- settors << ac
- else
- others << ac
- end
- end
- else
- if child.class.settor?
- settors << child
+ # Make a new array, so we don't have to deal with the details of
+ # flattening and such
+ items = []
+
+ # First clean out any AST::ASTArrays
+ @children.each { |child|
+ if child.instance_of?(AST::ASTArray)
+ child.each do |ac|
+ if ac.class.settor?
+ settors << ac
else
- others << child
+ others << ac
end
end
- }
- rets = [settors, others].flatten.collect { |child|
- child.safeevaluate(:scope => scope)
- }
- return rets.reject { |o| o.nil? }
- else
- # If we're not declarative, just do everything in order.
- return @children.collect { |item|
- item.safeevaluate(:scope => scope)
- }.reject { |o| o.nil? }
- end
+ else
+ if child.class.settor?
+ settors << child
+ else
+ others << child
+ end
+ end
+ }
+ rets = [settors, others].flatten.collect { |child|
+ child.safeevaluate(:scope => scope)
+ }
+ return rets.reject { |o| o.nil? }
end
def push(*ary)
diff --git a/lib/puppet/parser/ast/collection.rb b/lib/puppet/parser/ast/collection.rb
index c817b5c5e..7daf031cf 100644
--- a/lib/puppet/parser/ast/collection.rb
+++ b/lib/puppet/parser/ast/collection.rb
@@ -20,7 +20,7 @@ class Collection < AST::Branch
newcoll = Puppet::Parser::Collector.new(scope, @type, str, code, self.form)
- scope.newcollection(newcoll)
+ scope.configuration.add_collection(newcoll)
newcoll
end
diff --git a/lib/puppet/parser/ast/component.rb b/lib/puppet/parser/ast/component.rb
index 65f310212..17cfa9d61 100644
--- a/lib/puppet/parser/ast/component.rb
+++ b/lib/puppet/parser/ast/component.rb
@@ -27,7 +27,7 @@ class Puppet::Parser::AST
false
end
- def evaluate(hash)
+ def evaluate_resource(hash)
origscope = hash[:scope]
title = hash[:title]
args = symbolize_options(hash[:arguments] || {})
diff --git a/lib/puppet/parser/ast/hostclass.rb b/lib/puppet/parser/ast/hostclass.rb
index 642645824..9b60c692f 100644
--- a/lib/puppet/parser/ast/hostclass.rb
+++ b/lib/puppet/parser/ast/hostclass.rb
@@ -24,8 +24,10 @@ class Puppet::Parser::AST
scope = hash[:scope]
args = hash[:arguments]
- # Verify that we haven't already been evaluated
- if scope.class_scope(self)
+ # Verify that we haven't already been evaluated, and if we have been evaluated,
+ # make sure that we match the class.
+ if existing_scope = scope.class_scope(self)
+ #if existing_scope.source.object_id == self.object_id
Puppet.debug "%s class already evaluated" % @type
return nil
end