summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser/ast
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-01-18 17:24:15 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-01-18 17:24:15 +0000
commit6bab167dcbb274fd302a65d567d6af0ef6621b79 (patch)
tree92093e971bab20400ac8218a5cf1b159e64b5cbb /lib/puppet/parser/ast
parented39be9dd2ecdbe9a8624ed2f6c03334e123e81d (diff)
downloadpuppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.tar.gz
puppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.tar.xz
puppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.zip
Made lots of small changes, mostly to help usability but also fixed a couple of key bugs
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@841 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/ast')
-rw-r--r--lib/puppet/parser/ast/astarray.rb3
-rw-r--r--lib/puppet/parser/ast/classdef.rb2
-rw-r--r--lib/puppet/parser/ast/compdef.rb4
-rw-r--r--lib/puppet/parser/ast/component.rb7
-rw-r--r--lib/puppet/parser/ast/leaf.rb7
-rw-r--r--lib/puppet/parser/ast/nodedef.rb5
-rw-r--r--lib/puppet/parser/ast/objectdef.rb52
-rw-r--r--lib/puppet/parser/ast/objectref.rb20
-rw-r--r--lib/puppet/parser/ast/typedefaults.rb2
-rw-r--r--lib/puppet/parser/ast/vardef.rb2
10 files changed, 55 insertions, 49 deletions
diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb
index 3a02c58ea..1e7bdb81c 100644
--- a/lib/puppet/parser/ast/astarray.rb
+++ b/lib/puppet/parser/ast/astarray.rb
@@ -43,7 +43,10 @@ class Puppet::Parser::AST
item.safeevaluate(scope)
}
end
+
rets = rets.reject { |obj| obj.nil? }
+
+ return rets
end
def push(*ary)
diff --git a/lib/puppet/parser/ast/classdef.rb b/lib/puppet/parser/ast/classdef.rb
index b9f1c1c6b..7386b25eb 100644
--- a/lib/puppet/parser/ast/classdef.rb
+++ b/lib/puppet/parser/ast/classdef.rb
@@ -47,7 +47,7 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
end
diff --git a/lib/puppet/parser/ast/compdef.rb b/lib/puppet/parser/ast/compdef.rb
index ffd0dc0e0..4118c7184 100644
--- a/lib/puppet/parser/ast/compdef.rb
+++ b/lib/puppet/parser/ast/compdef.rb
@@ -36,7 +36,7 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
end
@@ -45,7 +45,7 @@ class Puppet::Parser::AST
@parentclass = nil
super
- Puppet.debug "Defining type %s" % @name.value
+ #Puppet.debug "Defining type %s" % @name.value
# we need to both mark that a given argument is valid,
# and we need to also store any provided default arguments
diff --git a/lib/puppet/parser/ast/component.rb b/lib/puppet/parser/ast/component.rb
index f1e6b9648..841977b2f 100644
--- a/lib/puppet/parser/ast/component.rb
+++ b/lib/puppet/parser/ast/component.rb
@@ -48,8 +48,8 @@ class Puppet::Parser::AST
unless hash.include?(arg)
if defined? default and ! default.nil?
hash[arg] = default
- Puppet.debug "Got default %s for %s in %s" %
- [default.inspect, arg.inspect, objname.inspect]
+ #Puppet.debug "Got default %s for %s in %s" %
+ # [default.inspect, arg.inspect, objname.inspect]
else
error = Puppet::ParseError.new(
"Must pass %s to %s of type %s" %
@@ -57,7 +57,6 @@ class Puppet::Parser::AST
)
error.line = self.line
error.file = self.file
- error.stack = caller
raise error
end
end
@@ -82,7 +81,7 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(except.message)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = except.backtrace
raise error
end
}
diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb
index 53cefdeb3..d25527864 100644
--- a/lib/puppet/parser/ast/leaf.rb
+++ b/lib/puppet/parser/ast/leaf.rb
@@ -29,11 +29,8 @@ class Puppet::Parser::AST
super
unless @value == 'true' or @value == 'false'
- error = Puppet::DevError.new(
+ raise Puppet::DevError,
"'%s' is not a boolean" % @value
- )
- error.stack = caller
- raise error
end
if @value == 'true'
@value = true
@@ -80,7 +77,7 @@ class Puppet::Parser::AST
error = Puppet::DevError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
end
diff --git a/lib/puppet/parser/ast/nodedef.rb b/lib/puppet/parser/ast/nodedef.rb
index 1cd0f683e..c0e1ee63e 100644
--- a/lib/puppet/parser/ast/nodedef.rb
+++ b/lib/puppet/parser/ast/nodedef.rb
@@ -18,8 +18,8 @@ class Puppet::Parser::AST
end
names.each { |name|
- Puppet.debug("defining host '%s' in scope %s" %
- [name, scope.object_id])
+ #Puppet.debug("defining host '%s' in scope %s" %
+ # [name, scope.object_id])
arghash = {
:name => name,
:code => @code
@@ -41,7 +41,6 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
raise error
end
}
diff --git a/lib/puppet/parser/ast/objectdef.rb b/lib/puppet/parser/ast/objectdef.rb
index 05be941ac..8999e921d 100644
--- a/lib/puppet/parser/ast/objectdef.rb
+++ b/lib/puppet/parser/ast/objectdef.rb
@@ -63,25 +63,24 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
unless object
# If not, verify that it's a builtin type
- begin
- object = Puppet::Type.type(objtype)
- rescue TypeError
- # otherwise, the user specified an invalid type
- error = Puppet::ParseError.new(
- "Invalid type %s" % objtype
- )
- error.line = @line
- error.file = @file
+ object = Puppet::Type.type(objtype)
+
+ # Type.type returns nil on object types that aren't found
+ unless object
+ error = Puppet::ParseError.new("Invalid type %s" % objtype)
+ error.line = self.line
+ error.file = self.file
raise error
end
end
+
# Autogenerate the name if one was not passed.
if defined? @name
objnames = @name.safeevaluate(scope)
@@ -110,12 +109,12 @@ class Puppet::Parser::AST
# If the object is a class, that means it's a builtin type
if object.is_a?(Class)
begin
- Puppet.debug(
- ("Setting object '%s' " +
- "in scope %s " +
- "with arguments %s") %
- [objname, scope.object_id, hash.inspect]
- )
+ #Puppet.debug(
+ # ("Setting object '%s' " +
+ # "in scope %s " +
+ # "with arguments %s") %
+ # [objname, scope.object_id, hash.inspect]
+ #)
obj = scope.setobject(
objtype,
objname,
@@ -131,14 +130,14 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
else
# but things like components create a new type; if we find
# one of those, evaluate that with our arguments
- Puppet.debug("Calling object '%s' with arguments %s" %
- [object.name, hash.inspect])
+ #Puppet.debug("Calling object '%s' with arguments %s" %
+ # [object.name, hash.inspect])
object.safeevaluate(scope,hash,objtype,objname)
end
}.reject { |obj| obj.nil? }
@@ -150,8 +149,8 @@ class Puppet::Parser::AST
begin
defaults = scope.lookupdefaults(objtype)
if defaults.length > 0
- Puppet.debug "Got defaults for %s: %s" %
- [objtype,defaults.inspect]
+ #Puppet.debug "Got defaults for %s: %s" %
+ # [objtype,defaults.inspect]
end
rescue => detail
raise Puppet::DevError,
@@ -219,7 +218,6 @@ class Puppet::Parser::AST
"Invalid parameter '%s' for type '%s'" %
[pname,type.name]
)
- error.stack = caller
error.line = self.line
error.file = self.file
raise error
@@ -243,7 +241,6 @@ class Puppet::Parser::AST
"Invalid parameter '%s' for type '%s'" %
[pname,objtype]
)
- error.stack = caller
error.line = self.line
error.file = self.file
raise error
@@ -277,7 +274,7 @@ class Puppet::Parser::AST
error = Puppet::DevError.new(
"failed to tree a %s" % self.class
)
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
}.join("\n")
@@ -306,13 +303,12 @@ class Puppet::Parser::AST
)
error.line = self.line
error.file = self.file
- error.stack = caller
raise error
end
- unless builtin
- Puppet.debug "%s is a defined type" % objtype
- end
+ #unless builtin
+ # Puppet.debug "%s is a defined type" % objtype
+ #end
self.paramcheck(builtin, objtype)
diff --git a/lib/puppet/parser/ast/objectref.rb b/lib/puppet/parser/ast/objectref.rb
index e9561d65d..6418c14fb 100644
--- a/lib/puppet/parser/ast/objectref.rb
+++ b/lib/puppet/parser/ast/objectref.rb
@@ -21,7 +21,7 @@ class Puppet::Parser::AST
objnames = [objnames]
end
- # Verify we can find the object.
+ # See if we can look the object up in our scope tree.
begin
object = scope.lookuptype(objtype)
rescue Puppet::ParseError => except
@@ -32,20 +32,32 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
+ raise error
+ end
+
+ # If the type isn't defined, verify that it's builtin
+ unless object or Puppet::Type.type(objtype)
+ error = Puppet::ParseError.new("Could not find type %s" %
+ objtype.inspect)
+ error.line = self.line
+ error.file = self.file
raise error
end
- Puppet.debug "ObjectRef returned type %s" % object
# should we implicitly iterate here?
# yes, i believe that we essentially have to...
- objnames.collect { |objname|
+ ret = objnames.collect { |objname|
if object.is_a?(AST::Component)
objname = "%s[%s]" % [objtype,objname]
objtype = "component"
end
[objtype,objname]
}.reject { |obj| obj.nil? }
+
+ # Return a flattened array, since we know that we've created an
+ # array
+ return *ret
end
def tree(indent = 0)
diff --git a/lib/puppet/parser/ast/typedefaults.rb b/lib/puppet/parser/ast/typedefaults.rb
index 17ef94589..c1f8cce52 100644
--- a/lib/puppet/parser/ast/typedefaults.rb
+++ b/lib/puppet/parser/ast/typedefaults.rb
@@ -24,7 +24,7 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
end
diff --git a/lib/puppet/parser/ast/vardef.rb b/lib/puppet/parser/ast/vardef.rb
index 6ada75589..52548a42c 100644
--- a/lib/puppet/parser/ast/vardef.rb
+++ b/lib/puppet/parser/ast/vardef.rb
@@ -19,7 +19,7 @@ class Puppet::Parser::AST
error = Puppet::ParseError.new(detail)
error.line = self.line
error.file = self.file
- error.stack = caller
+ error.backtrace = detail.backtrace
raise error
end
end