diff options
Diffstat (limited to 'lib/puppet/parser/ast')
-rw-r--r-- | lib/puppet/parser/ast/astarray.rb | 20 | ||||
-rw-r--r-- | lib/puppet/parser/ast/definition.rb | 2 | ||||
-rw-r--r-- | lib/puppet/parser/ast/node.rb | 2 |
3 files changed, 7 insertions, 17 deletions
diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb index b62c820ca..7283a1f6c 100644 --- a/lib/puppet/parser/ast/astarray.rb +++ b/lib/puppet/parser/ast/astarray.rb @@ -9,11 +9,6 @@ class Puppet::Parser::AST class ASTArray < Branch include Enumerable - # True if this ASTArray represents a list of statements in a - # context that defines a namespace. Classes and definitions may - # only appear in such a context. - attr_accessor :is_a_namespace - # Return a child by index. Probably never used. def [](index) @children[index] @@ -23,17 +18,10 @@ class Puppet::Parser::AST def evaluate(scope) result = [] @children.each do |child| - if child.respond_to? :instantiate - if is_a_namespace - # no problem, just don't evaluate it. - else - msg = "Classes, definitions, and nodes may only appear at toplevel or inside other classes" - error = Puppet::Error.new(msg) - error.line = child.line - error.file = child.file - raise error - end - else + # Skip things that respond to :instantiate (classes, nodes, + # and definitions), because they have already been + # instantiated. + if !child.respond_to?(:instantiate) item = child.safeevaluate(scope) if !item.nil? # nil values are implicitly removed. diff --git a/lib/puppet/parser/ast/definition.rb b/lib/puppet/parser/ast/definition.rb index 09f52b519..287845ade 100644 --- a/lib/puppet/parser/ast/definition.rb +++ b/lib/puppet/parser/ast/definition.rb @@ -1,6 +1,8 @@ require 'puppet/parser/ast/top_level_construct' class Puppet::Parser::AST::Definition < Puppet::Parser::AST::TopLevelConstruct + attr_accessor :context + def initialize(name, context = {}) @name = name @context = context diff --git a/lib/puppet/parser/ast/node.rb b/lib/puppet/parser/ast/node.rb index c19a24ce0..4951a6365 100644 --- a/lib/puppet/parser/ast/node.rb +++ b/lib/puppet/parser/ast/node.rb @@ -1,7 +1,7 @@ require 'puppet/parser/ast/top_level_construct' class Puppet::Parser::AST::Node < Puppet::Parser::AST::TopLevelConstruct - attr_accessor :names + attr_accessor :names, :context def initialize(names, context = {}) raise ArgumentError, "names should be an array" unless names.is_a? Array |