summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser/ast')
-rw-r--r--lib/puppet/parser/ast/astarray.rb20
-rw-r--r--lib/puppet/parser/ast/definition.rb2
-rw-r--r--lib/puppet/parser/ast/node.rb2
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