summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parser
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r--lib/puppet/parser/ast/objectdef.rb7
-rw-r--r--lib/puppet/parser/grammar.ra22
-rw-r--r--lib/puppet/parser/interpreter.rb10
-rw-r--r--lib/puppet/parser/lexer.rb3
-rw-r--r--lib/puppet/parser/parser.rb799
-rw-r--r--lib/puppet/parser/scope.rb120
6 files changed, 474 insertions, 487 deletions
diff --git a/lib/puppet/parser/ast/objectdef.rb b/lib/puppet/parser/ast/objectdef.rb
index 9acf56b49..f15a082e2 100644
--- a/lib/puppet/parser/ast/objectdef.rb
+++ b/lib/puppet/parser/ast/objectdef.rb
@@ -2,7 +2,7 @@ class Puppet::Parser::AST
# Any normal puppet object declaration. Can result in a class or a
# component, in addition to builtin types.
class ObjectDef < AST::Branch
- attr_accessor :name, :type
+ attr_accessor :name, :type, :collectable
attr_reader :params
# probably not used at all
@@ -93,6 +93,11 @@ class Puppet::Parser::AST
:file => @file,
:line => @line
)
+
+ # Retain our collectable marking
+ if self.collectable
+ obj.collectable = true
+ end
rescue Puppet::ParseError => except
except.line = self.line
except.file = self.file
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index c3b694534..b10999bbd 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -7,7 +7,7 @@ class Puppet::Parser::Parser
token LBRACK DQTEXT SQTEXT RBRACK LBRACE RBRACE SYMBOL FARROW COMMA TRUE FALSE EQUALS
token QMARK LPAREN RPAREN ISEQUAL GREATEREQUAL GREATERTHAN LESSTHAN LESSEQUAL NOTEQUAL
token IF ELSE IMPORT DEFINE ELSIF VARIABLE CLASS INHERITS NODE BOOLEAN DOT COLON TYPE
-token NAME SEMIC CASE DEFAULT INCLUDE TAG FUNCTION
+token NAME SEMIC CASE DEFAULT FUNCTION AT
# We have 2 shift/reduce conflicts
expect 2
@@ -40,6 +40,7 @@ statements: statement
# The main list of valid statements
statement: object
+ | collectable
| assignment
| casestatement
| import
@@ -148,6 +149,25 @@ object: name LBRACE objectinstances endsemi RBRACE {
)
}
+# Collectable objects; these get stored in the database, instead of
+# being passed to the client.
+collectable: AT object {
+ if val[1].is_a? AST::TypeDefaults
+ raise Puppet::ParseError, "Defaults are not collectable"
+ end
+
+ # Just mark our objects as collectable and pass them through.
+ if val[1].instance_of?(AST::ASTArray)
+ val[1].each do |obj|
+ obj.collectable = true
+ end
+ else
+ val[1].collectable = true
+ end
+
+ result = val[1]
+}
+
objectinst: objectname COLON params endcomma {
result = AST::ObjectInst.new(
:line => @lexer.line,
diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb
index a11e870ab..5ddd82829 100644
--- a/lib/puppet/parser/interpreter.rb
+++ b/lib/puppet/parser/interpreter.rb
@@ -246,13 +246,21 @@ module Puppet
raise LoadError,
"storeconfigs is enabled but rails is unavailable"
end
- Puppet::Rails.init
end
+
+ Puppet::Rails.init
+
+ # We store all of the objects, even the collectable ones
Puppet::Rails::Host.store(
:objects => objects,
:host => client,
:facts => facts
)
+
+ # Now that we've stored everything, we need to strip out
+ # the collectable objects so that they are not sent on
+ # to the host
+ objects.collectstrip!
end
return objects
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index e3fc9ded7..65a513624 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -34,6 +34,9 @@ module Puppet
%r{,} => :COMMA,
%r{\.} => :DOT,
%r{:} => :COLON,
+ %r{@} => :AT,
+ %r{<\|} => :LCOLLECT,
+ %r{\|>} => :RCOLLECT,
%r{;} => :SEMIC,
%r{\?} => :QMARK,
%r{\\} => :BACKSLASH,
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 7a5fd7c55..5b3495a8c 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -29,7 +29,7 @@ module Puppet
class Parser < Racc::Parser
-module_eval <<'..end grammar.ra modeval..id81e5fd5119', 'grammar.ra', 737
+module_eval <<'..end grammar.ra modeval..id4642cdeefd', 'grammar.ra', 757
require 'puppet/parser/functions'
attr_reader :file
@@ -155,52 +155,54 @@ end
# $Id$
-..end grammar.ra modeval..id81e5fd5119
+..end grammar.ra modeval..id4642cdeefd
##### racc 1.4.4 generates ###
racc_reduce_table = [
0, 0, :racc_error,
- 1, 44, :_reduce_1,
+ 1, 43, :_reduce_1,
+ 1, 44, :_reduce_none,
+ 2, 44, :_reduce_3,
1, 45, :_reduce_none,
- 2, 45, :_reduce_3,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 1, 46, :_reduce_none,
- 4, 51, :_reduce_12,
- 2, 51, :_reduce_13,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 1, 45, :_reduce_none,
+ 4, 51, :_reduce_13,
+ 2, 51, :_reduce_14,
1, 55, :_reduce_none,
- 3, 55, :_reduce_15,
+ 3, 55, :_reduce_16,
1, 56, :_reduce_none,
1, 56, :_reduce_none,
- 5, 47, :_reduce_18,
- 5, 47, :_reduce_19,
- 5, 47, :_reduce_20,
- 4, 64, :_reduce_21,
+ 5, 46, :_reduce_19,
+ 5, 46, :_reduce_20,
+ 5, 46, :_reduce_21,
+ 2, 47, :_reduce_22,
+ 4, 64, :_reduce_23,
1, 59, :_reduce_none,
- 3, 59, :_reduce_23,
+ 3, 59, :_reduce_25,
0, 60, :_reduce_none,
1, 60, :_reduce_none,
- 1, 57, :_reduce_26,
- 1, 63, :_reduce_27,
+ 1, 57, :_reduce_28,
+ 1, 63, :_reduce_29,
1, 65, :_reduce_none,
1, 65, :_reduce_none,
1, 65, :_reduce_none,
1, 65, :_reduce_none,
1, 65, :_reduce_none,
1, 65, :_reduce_none,
- 3, 48, :_reduce_34,
- 0, 61, :_reduce_35,
- 1, 61, :_reduce_36,
- 3, 61, :_reduce_37,
- 3, 70, :_reduce_38,
+ 3, 48, :_reduce_36,
+ 0, 61, :_reduce_37,
+ 1, 61, :_reduce_38,
+ 3, 61, :_reduce_39,
+ 3, 70, :_reduce_40,
1, 71, :_reduce_none,
- 3, 71, :_reduce_40,
+ 3, 71, :_reduce_42,
1, 69, :_reduce_none,
1, 69, :_reduce_none,
1, 69, :_reduce_none,
@@ -211,258 +213,268 @@ racc_reduce_table = [
1, 69, :_reduce_none,
1, 69, :_reduce_none,
1, 69, :_reduce_none,
- 4, 75, :_reduce_51,
- 1, 66, :_reduce_52,
- 1, 66, :_reduce_53,
- 1, 73, :_reduce_54,
- 4, 74, :_reduce_55,
- 5, 49, :_reduce_56,
+ 4, 75, :_reduce_53,
+ 1, 66, :_reduce_54,
+ 1, 66, :_reduce_55,
+ 1, 73, :_reduce_56,
+ 4, 74, :_reduce_57,
+ 5, 49, :_reduce_58,
1, 76, :_reduce_none,
- 2, 76, :_reduce_58,
- 5, 77, :_reduce_59,
- 4, 77, :_reduce_60,
+ 2, 76, :_reduce_60,
+ 5, 77, :_reduce_61,
+ 4, 77, :_reduce_62,
1, 78, :_reduce_none,
- 3, 78, :_reduce_62,
- 3, 67, :_reduce_63,
+ 3, 78, :_reduce_64,
+ 3, 67, :_reduce_65,
1, 80, :_reduce_none,
- 3, 80, :_reduce_65,
+ 3, 80, :_reduce_67,
1, 82, :_reduce_none,
- 3, 82, :_reduce_67,
- 3, 81, :_reduce_68,
+ 3, 82, :_reduce_69,
+ 3, 81, :_reduce_70,
1, 79, :_reduce_none,
1, 79, :_reduce_none,
1, 79, :_reduce_none,
1, 79, :_reduce_none,
1, 79, :_reduce_none,
1, 79, :_reduce_none,
- 1, 79, :_reduce_75,
- 2, 50, :_reduce_76,
- 6, 52, :_reduce_77,
- 5, 52, :_reduce_78,
- 6, 53, :_reduce_79,
- 5, 53, :_reduce_80,
- 6, 54, :_reduce_81,
- 5, 54, :_reduce_82,
+ 1, 79, :_reduce_77,
+ 2, 50, :_reduce_78,
+ 6, 52, :_reduce_79,
+ 5, 52, :_reduce_80,
+ 6, 53, :_reduce_81,
+ 5, 53, :_reduce_82,
+ 6, 54, :_reduce_83,
+ 5, 54, :_reduce_84,
1, 85, :_reduce_none,
- 2, 85, :_reduce_84,
- 1, 86, :_reduce_85,
- 1, 86, :_reduce_86,
- 0, 87, :_reduce_87,
+ 2, 85, :_reduce_86,
+ 1, 86, :_reduce_87,
+ 1, 86, :_reduce_88,
+ 0, 87, :_reduce_89,
1, 83, :_reduce_none,
- 3, 83, :_reduce_89,
- 3, 83, :_reduce_90,
+ 3, 83, :_reduce_91,
+ 3, 83, :_reduce_92,
1, 88, :_reduce_none,
- 3, 88, :_reduce_92,
- 3, 89, :_reduce_93,
- 1, 89, :_reduce_94,
+ 3, 88, :_reduce_94,
+ 3, 89, :_reduce_95,
+ 1, 89, :_reduce_96,
1, 84, :_reduce_none,
- 2, 84, :_reduce_96,
- 1, 58, :_reduce_97,
- 3, 68, :_reduce_98,
+ 2, 84, :_reduce_98,
+ 1, 58, :_reduce_99,
+ 3, 68, :_reduce_100,
1, 72, :_reduce_none,
1, 72, :_reduce_none,
0, 62, :_reduce_none,
- 1, 62, :_reduce_102 ]
+ 1, 62, :_reduce_104 ]
-racc_reduce_n = 103
+racc_reduce_n = 105
-racc_shift_n = 170
+racc_shift_n = 173
racc_action_table = [
- 32, 27, 28, 146, 51, 32, 27, 28, 58, 91,
- 161, 87, 106, 107, 91, 149, 80, 32, 27, 28,
- 25, 39, 32, 27, 28, 87, 39, 145, -69, 7,
- 46, 39, 85, 3, 7, 46, 50, 40, 3, 7,
- 44, 51, 40, 39, 7, 44, 122, 46, 39, 123,
- 3, 7, 46, 39, 40, 3, 7, 44, 39, 40,
- 93, 7, 44, 32, 27, 28, 7, 85, 32, 27,
- 28, 39, 135, 50, 97, 49, 27, 28, 134, 7,
- 32, 27, 28, -70, 91, 32, 27, 28, 125, 39,
- 127, 98, -70, 46, 39, -73, 3, 7, 46, 82,
- 40, 3, 65, 44, 130, 40, 39, 131, 44, 87,
- 46, 39, 103, 3, 7, 46, 97, 40, 3, 7,
- 44, 136, 40, 137, 94, 44, 32, 27, 28, -74,
- 104, 32, 27, 28, 106, 107, -72, 81, 144, 93,
- 79, -72, -71, 152, 27, 28, 74, 97, 7, 27,
- 28, 59, 39, 148, 49, 48, 46, 39, -69, 3,
- 7, 46, 162, 40, 3, 7, 44, 47, 40, 39,
- 29, 44, -71, 46, 39, 25, 3, 7, 46, 23,
- 40, 3, 7, 44, 141, 40, 27, 28, 44, nil,
- nil, 27, 28, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 27, 28, nil, 114, nil, 27, 28,
- nil, 39, nil, nil, nil, 46, 39, nil, 3, 7,
- 46, nil, 40, 3, 7, 44, nil, 40, 39, nil,
- 44, 169, 46, 39, nil, 3, 7, 46, nil, 40,
- 3, 7, 44, nil, 40, nil, 151, 44, nil, 6,
- 9, nil, 13, 15, nil, 19, nil, nil, nil, 3,
- 7, 158, 11, nil, 6, 9, 20, 13, 15, nil,
- 19, nil, nil, nil, 3, 7, 164, 11, nil, 6,
- 9, 20, 13, 15, nil, 19, nil, nil, nil, 3,
- 7, 165, 11, nil, 6, 9, 20, 13, 15, nil,
- 19, nil, nil, nil, 3, 7, 168, 11, nil, 6,
- 9, 20, 13, 15, nil, 19, nil, nil, nil, 3,
- 7, 139, 11, nil, 6, 9, 20, 13, 15, nil,
- 19, nil, nil, nil, 3, 7, 154, 11, nil, 6,
- 9, 20, 13, 15, nil, 19, nil, nil, nil, 3,
- 7, nil, 11, nil, 6, 9, 20, 13, 15, nil,
- 19, nil, nil, nil, 3, 7, nil, 11, nil, 6,
- 9, 20, 13, 15, nil, 19, nil, nil, nil, 3,
- 7, nil, 11, nil, 6, 9, 20, 13, 15, nil,
- 19, nil, nil, nil, 3, 7, nil, 11, nil, nil,
- nil, 20 ]
+ 33, 28, 29, 58, 149, 40, 33, 28, 29, 140,
+ 58, 56, 40, 7, -76, 33, 28, 29, 89, -72,
+ 7, 33, 28, 29, 128, 138, 40, 84, 148, 87,
+ 47, 137, 40, 3, 7, 57, 47, 41, 42, 3,
+ 7, 40, 57, 41, 42, 47, -74, 40, 3, 67,
+ 54, 47, 41, 42, 3, 7, 40, 100, 41, 42,
+ 33, 28, 29, 40, 7, 107, 33, 28, 29, 109,
+ 110, 7, 89, 28, 29, 33, 28, 29, 152, 3,
+ 7, 33, 28, 29, 125, 164, 40, 109, 110, 126,
+ 47, 97, 40, 3, 7, 96, 47, 41, 42, 3,
+ 7, 40, 96, 41, 42, 47, 100, 40, 3, 7,
+ 130, 47, 41, 42, 3, 7, 83, -74, 41, 42,
+ 33, 28, 29, 133, 134, 91, 33, 28, 29, 82,
+ 91, -71, 139, 26, -72, 81, 28, 29, -73, 144,
+ 76, -71, 28, 29, 147, -73, 40, 61, 95, 91,
+ 47, 155, 40, 3, 7, 56, 47, 41, 42, 3,
+ 7, 40, 100, 41, 42, 47, 7, 40, 3, 7,
+ 106, 47, 41, 42, 3, 7, 28, 29, 41, 42,
+ 151, 89, 28, 29, 49, 7, 165, 48, 30, 101,
+ 26, 28, 29, 87, -75, nil, nil, 28, 29, nil,
+ 117, 40, nil, nil, nil, 47, nil, 40, 3, 7,
+ nil, 47, 41, 42, 3, 7, 40, 157, 41, 42,
+ 47, nil, 40, 3, 7, nil, 47, 41, 42, 3,
+ 7, nil, nil, 41, 42, 6, 9, 142, 13, 15,
+ nil, 21, nil, nil, nil, 3, 7, nil, 11, nil,
+ 16, 18, nil, nil, 161, 6, 9, nil, 13, 15,
+ nil, 21, nil, nil, nil, 3, 7, nil, 11, nil,
+ 16, 18, 6, 9, 167, 13, 15, nil, 21, nil,
+ nil, nil, 3, 7, nil, 11, nil, 16, 18, nil,
+ nil, 168, 6, 9, nil, 13, 15, nil, 21, nil,
+ nil, nil, 3, 7, nil, 11, nil, 16, 18, 6,
+ 9, 171, 13, 15, nil, 21, nil, nil, nil, 3,
+ 7, nil, 11, nil, 16, 18, nil, nil, 154, 6,
+ 9, nil, 13, 15, nil, 21, nil, nil, nil, 3,
+ 7, nil, 11, nil, 16, 18, 6, 9, 172, 13,
+ 15, nil, 21, nil, nil, nil, 3, 7, nil, 11,
+ nil, 16, 18, nil, nil, nil, 6, 9, nil, 13,
+ 15, nil, 21, nil, nil, nil, 3, 7, nil, 11,
+ nil, 16, 18, 6, 9, nil, 13, 15, nil, 21,
+ nil, nil, nil, 3, 7, nil, 11, nil, 16, 18,
+ 6, 9, nil, 13, 15, nil, 21, nil, nil, nil,
+ 3, 7, nil, 11, nil, 16, 18 ]
racc_action_check = [
- 47, 47, 47, 118, 19, 105, 105, 105, 20, 121,
- 143, 98, 143, 143, 54, 121, 35, 80, 80, 80,
- 35, 20, 32, 32, 32, 49, 47, 118, 35, 20,
- 47, 105, 48, 47, 47, 105, 19, 47, 105, 105,
- 47, 52, 105, 80, 74, 105, 84, 80, 32, 85,
- 80, 80, 32, 91, 80, 32, 32, 80, 82, 32,
- 87, 91, 32, 94, 94, 94, 82, 52, 25, 25,
- 25, 58, 99, 52, 88, 43, 6, 6, 99, 58,
- 11, 11, 11, 43, 92, 136, 136, 136, 89, 94,
- 92, 73, 70, 94, 25, 45, 94, 94, 25, 44,
- 94, 25, 25, 94, 95, 25, 11, 96, 25, 97,
- 11, 136, 75, 11, 11, 136, 68, 11, 136, 136,
- 11, 101, 136, 102, 67, 136, 93, 93, 93, 41,
- 78, 141, 141, 141, 78, 78, 37, 36, 116, 65,
- 33, 64, 30, 124, 81, 81, 29, 133, 135, 120,
- 120, 23, 93, 120, 17, 15, 93, 141, 63, 93,
- 93, 141, 145, 93, 141, 141, 93, 13, 141, 81,
- 9, 141, 60, 81, 120, 4, 81, 81, 120, 1,
- 81, 120, 120, 81, 110, 120, 146, 146, 120, nil,
- nil, 114, 114, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 79, 79, nil, 79, nil, 160, 160,
- nil, 146, nil, nil, nil, 146, 114, nil, 146, 146,
- 114, nil, 146, 114, 114, 146, nil, 114, 79, nil,
- 114, 167, 79, 160, nil, 79, 79, 160, nil, 79,
- 160, 160, 79, nil, 160, nil, 122, 160, nil, 167,
- 167, nil, 167, 167, nil, 167, nil, nil, nil, 167,
- 167, 138, 167, nil, 122, 122, 167, 122, 122, nil,
- 122, nil, nil, nil, 122, 122, 150, 122, nil, 138,
- 138, 122, 138, 138, nil, 138, nil, nil, nil, 138,
- 138, 153, 138, nil, 150, 150, 138, 150, 150, nil,
- 150, nil, nil, nil, 150, 150, 162, 150, nil, 153,
- 153, 150, 153, 153, nil, 153, nil, nil, nil, 153,
- 153, 103, 153, nil, 162, 162, 153, 162, 162, nil,
- 162, nil, nil, nil, 162, 162, 125, 162, nil, 103,
- 103, 162, 103, 103, nil, 103, nil, nil, nil, 103,
- 103, nil, 103, nil, 125, 125, 103, 125, 125, nil,
- 125, nil, nil, nil, 125, 125, nil, 125, nil, 2,
- 2, 125, 2, 2, nil, 2, nil, nil, nil, 2,
- 2, nil, 2, nil, 0, 0, 2, 0, 0, nil,
- 0, nil, nil, nil, 0, 0, nil, 0, nil, nil,
- nil, 0 ]
+ 48, 48, 48, 59, 121, 54, 82, 82, 82, 105,
+ 21, 45, 84, 54, 43, 26, 26, 26, 90, 45,
+ 84, 108, 108, 108, 90, 102, 48, 42, 121, 59,
+ 48, 102, 82, 48, 48, 59, 82, 48, 48, 82,
+ 82, 26, 21, 82, 82, 26, 39, 108, 26, 26,
+ 16, 108, 26, 26, 108, 108, 89, 70, 108, 108,
+ 96, 96, 96, 16, 89, 80, 11, 11, 11, 80,
+ 80, 16, 124, 6, 6, 33, 33, 33, 124, 18,
+ 18, 139, 139, 139, 86, 146, 96, 146, 146, 87,
+ 96, 69, 11, 96, 96, 67, 11, 96, 96, 11,
+ 11, 33, 91, 11, 11, 33, 92, 139, 33, 33,
+ 93, 139, 33, 33, 139, 139, 38, 66, 139, 139,
+ 97, 97, 97, 98, 99, 100, 144, 144, 144, 37,
+ 101, 65, 104, 37, 72, 34, 149, 149, 31, 113,
+ 30, 37, 83, 83, 119, 62, 97, 24, 61, 56,
+ 97, 129, 144, 97, 97, 19, 144, 97, 97, 144,
+ 144, 149, 136, 144, 144, 149, 138, 83, 149, 149,
+ 77, 83, 149, 149, 83, 83, 123, 123, 83, 83,
+ 123, 50, 163, 163, 15, 76, 148, 13, 9, 75,
+ 4, 117, 117, 49, 46, nil, nil, 81, 81, nil,
+ 81, 123, nil, nil, nil, 123, nil, 163, 123, 123,
+ nil, 163, 123, 123, 163, 163, 117, 130, 163, 163,
+ 117, nil, 81, 117, 117, nil, 81, 117, 117, 81,
+ 81, nil, nil, 81, 81, 130, 130, 106, 130, 130,
+ nil, 130, nil, nil, nil, 130, 130, nil, 130, nil,
+ 130, 130, nil, nil, 141, 106, 106, nil, 106, 106,
+ nil, 106, nil, nil, nil, 106, 106, nil, 106, nil,
+ 106, 106, 141, 141, 153, 141, 141, nil, 141, nil,
+ nil, nil, 141, 141, nil, 141, nil, 141, 141, nil,
+ nil, 156, 153, 153, nil, 153, 153, nil, 153, nil,
+ nil, nil, 153, 153, nil, 153, nil, 153, 153, 156,
+ 156, 165, 156, 156, nil, 156, nil, nil, nil, 156,
+ 156, nil, 156, nil, 156, 156, nil, nil, 125, 165,
+ 165, nil, 165, 165, nil, 165, nil, nil, nil, 165,
+ 165, nil, 165, nil, 165, 165, 125, 125, 170, 125,
+ 125, nil, 125, nil, nil, nil, 125, 125, nil, 125,
+ nil, 125, 125, nil, nil, nil, 170, 170, nil, 170,
+ 170, nil, 170, nil, nil, nil, 170, 170, nil, 170,
+ nil, 170, 170, 0, 0, nil, 0, 0, nil, 0,
+ nil, nil, nil, 0, 0, nil, 0, nil, 0, 0,
+ 1, 1, nil, 1, 1, nil, 1, nil, nil, nil,
+ 1, 1, nil, 1, nil, 1, 1 ]
racc_action_pointer = [
- 359, 179, 344, nil, 169, nil, 73, nil, nil, 134,
- nil, 78, nil, 154, nil, 119, nil, 148, nil, 0,
- -7, nil, nil, 151, nil, 66, nil, nil, nil, 131,
- 128, nil, 20, 126, nil, 14, 131, 122, nil, nil,
- nil, 115, nil, 69, 84, 81, nil, -2, 2, -11,
- nil, nil, 37, nil, 4, nil, nil, nil, 43, nil,
- 158, nil, nil, 144, 127, 130, nil, 87, 106, nil,
- 78, nil, nil, 57, 8, 106, nil, nil, 125, 200,
- 15, 141, 30, nil, 40, 13, nil, 51, 64, 82,
- nil, 25, 74, 124, 61, 97, 100, 73, -25, 62,
- nil, 108, 107, 314, nil, 3, nil, nil, nil, nil,
- 175, nil, nil, nil, 188, nil, 133, nil, -7, nil,
- 146, -1, 239, nil, 136, 329, nil, nil, nil, nil,
- nil, nil, nil, 137, nil, 112, 83, nil, 254, nil,
- nil, 129, nil, 3, nil, 156, 183, nil, nil, nil,
- 269, nil, nil, 284, nil, nil, nil, nil, nil, nil,
- 205, nil, 299, nil, nil, nil, nil, 224, nil, nil ]
+ 358, 375, nil, nil, 184, nil, 70, nil, nil, 152,
+ nil, 64, nil, 174, nil, 148, 35, nil, 44, 149,
+ nil, 6, nil, nil, 147, nil, 13, nil, nil, nil,
+ 125, 124, nil, 73, 121, nil, nil, 127, 110, 32,
+ nil, nil, 12, 0, nil, 5, 180, nil, -2, 163,
+ 171, nil, nil, nil, -23, nil, 113, nil, nil, -1,
+ nil, 148, 131, nil, nil, 117, 103, 86, nil, 54,
+ 47, nil, 120, nil, nil, 155, 149, 164, nil, nil,
+ 60, 194, 4, 139, -16, nil, 78, 53, nil, 28,
+ 8, 93, 96, 104, nil, nil, 58, 118, 116, 117,
+ 89, 94, 15, nil, 119, -7, 230, nil, 19, nil,
+ nil, nil, nil, 130, nil, nil, nil, 188, nil, 139,
+ nil, -6, nil, 173, 62, 321, nil, nil, nil, 144,
+ 210, nil, nil, nil, nil, nil, 152, nil, 130, 79,
+ nil, 247, nil, nil, 124, nil, 78, nil, 180, 133,
+ nil, nil, nil, 267, nil, nil, 284, nil, nil, nil,
+ nil, nil, nil, 179, nil, 304, nil, nil, nil, nil,
+ 341, nil, nil ]
racc_action_default = [
- -103, -103, -1, -27, -103, -2, -103, -26, -4, -103,
- -5, -103, -6, -103, -7, -103, -8, -103, -9, -103,
- -103, -10, -11, -103, -3, -35, -76, -52, -53, -87,
- -41, -45, -103, -103, -48, -42, -103, -47, -46, -97,
- -75, -44, -49, -43, -103, -50, -54, -103, -87, -35,
- -85, -86, -87, -83, -13, -14, -16, -17, -103, 170,
- -28, -31, -33, -29, -32, -26, -36, -24, -101, -74,
- -30, -73, -22, -103, -87, -103, -88, -39, -103, -103,
- -103, -103, -103, -34, -103, -103, -95, -103, -101, -103,
- -84, -103, -103, -103, -25, -103, -103, -102, -35, -103,
- -91, -94, -103, -103, -98, -103, -99, -100, -71, -69,
- -103, -72, -63, -64, -103, -70, -103, -57, -103, -61,
- -103, -103, -103, -96, -103, -103, -15, -12, -38, -23,
- -18, -19, -37, -101, -90, -103, -103, -89, -103, -78,
- -40, -103, -66, -103, -55, -103, -103, -58, -56, -51,
- -103, -80, -20, -103, -82, -21, -92, -93, -77, -68,
- -103, -65, -103, -62, -79, -81, -67, -103, -60, -59 ]
+ -105, -1, -2, -29, -105, -4, -105, -28, -5, -105,
+ -6, -105, -7, -105, -8, -105, -105, -9, -105, -105,
+ -10, -105, -11, -12, -105, -3, -37, -78, -54, -55,
+ -89, -43, -47, -105, -105, -50, -48, -44, -105, -49,
+ -99, -77, -105, -46, -51, -45, -52, -56, -105, -89,
+ -14, -15, -17, -18, -105, -22, -37, -87, -88, -89,
+ -85, -105, -30, -33, -35, -31, -34, -28, -38, -26,
+ -103, -76, -32, -75, -24, -105, -89, -105, -90, -41,
+ -105, -105, -105, -105, -105, -36, -105, -105, -97, -105,
+ -105, -105, -103, -105, -86, 173, -105, -27, -105, -105,
+ -104, -37, -105, -93, -96, -105, -105, -100, -105, -101,
+ -102, -73, -71, -105, -74, -65, -66, -105, -72, -105,
+ -59, -105, -63, -105, -105, -105, -98, -16, -13, -105,
+ -105, -40, -25, -19, -20, -39, -103, -92, -105, -105,
+ -91, -105, -80, -42, -105, -68, -105, -57, -105, -105,
+ -60, -58, -53, -105, -82, -21, -105, -84, -23, -94,
+ -95, -79, -70, -105, -67, -105, -64, -81, -83, -69,
+ -105, -62, -61 ]
racc_goto_table = [
- 24, 2, 26, 35, 105, 96, 68, 113, 76, 132,
- 117, 53, 56, 110, 78, 119, 112, 63, 61, 54,
- 38, 60, 71, 72, 35, 124, 62, 84, 120, 143,
- 88, 89, 100, 75, 95, 52, 67, 126, 99, 35,
- 1, 38, 142, nil, 90, nil, nil, nil, 110, 147,
- 56, nil, nil, 102, 119, nil, 38, 92, nil, nil,
- 57, nil, nil, nil, nil, 64, 101, nil, nil, 160,
- 155, 109, 35, 109, 56, 108, 71, 108, 71, 133,
- 163, 121, nil, 56, nil, 35, 63, 61, 166, 38,
- 60, 71, 129, 156, 110, 62, nil, 35, 57, 43,
- nil, nil, 38, nil, 138, nil, 109, nil, nil, nil,
- 108, 71, 109, 70, 38, nil, 108, 71, 69, 111,
- 43, 111, 57, 150, nil, nil, 153, 101, 35, nil,
- nil, 57, nil, 35, 64, 43, 24, 36, 109, nil,
- nil, nil, 108, 71, nil, 38, nil, nil, 24, nil,
- 38, 24, 109, nil, 111, nil, 108, 71, 77, nil,
- 111, nil, nil, 167, nil, 24, nil, 115, 43, 115,
- nil, nil, 69, 83, 69, nil, nil, nil, nil, nil,
- nil, 43, 70, nil, nil, nil, 111, 69, nil, nil,
- nil, nil, nil, 43, nil, nil, nil, nil, nil, nil,
- 111, nil, 115, nil, nil, nil, 116, 69, 115, nil,
- nil, nil, nil, 69, nil, nil, nil, nil, nil, 128,
- nil, nil, nil, nil, 43, nil, nil, nil, nil, 43,
- nil, 140, nil, nil, 115, nil, nil, nil, nil, 69,
- nil, nil, nil, nil, nil, nil, nil, nil, 115, nil,
- nil, nil, nil, 69, nil, nil, nil, nil, nil, nil,
- nil, nil, 157, nil, nil, nil, nil, 159 ]
+ 25, 1, 27, 63, 74, 50, 116, 78, 103, 120,
+ 86, 37, 60, 135, 80, 45, 52, 70, 115, 64,
+ 93, 123, 62, 73, 146, 108, 65, 113, 77, 122,
+ 72, 98, 59, 37, 69, 127, 99, 45, 102, 24,
+ nil, nil, 145, 90, nil, nil, nil, 92, 37, 150,
+ 94, nil, 45, 105, 52, nil, nil, nil, 129, nil,
+ nil, nil, nil, 113, nil, nil, nil, nil, nil, 122,
+ 159, nil, nil, 124, 63, 132, 104, 111, 73, 111,
+ 73, 112, 37, 112, 52, 118, 45, 118, 169, 52,
+ 64, 163, 136, 62, 73, 166, 37, 65, nil, nil,
+ 45, 72, 158, nil, nil, nil, nil, 141, 37, 113,
+ nil, nil, 45, 111, 73, nil, 71, 112, 53, 111,
+ 73, 118, nil, 112, nil, nil, 153, 118, 66, nil,
+ nil, 156, nil, nil, nil, 36, nil, nil, 104, 37,
+ 25, nil, 55, 45, 37, 111, 73, nil, 45, 112,
+ nil, nil, 25, 118, nil, 25, 53, 36, 38, 111,
+ 73, nil, nil, 112, nil, nil, 170, 118, nil, 25,
+ nil, 71, 36, 71, nil, nil, nil, nil, nil, nil,
+ 79, nil, nil, 114, nil, 114, 53, 71, nil, nil,
+ nil, 53, nil, nil, nil, 85, nil, nil, nil, 66,
+ nil, nil, nil, nil, nil, nil, 36, 71, nil, nil,
+ nil, nil, nil, 71, nil, nil, nil, nil, nil, 114,
+ 36, nil, nil, nil, nil, 114, nil, nil, nil, 119,
+ nil, nil, 36, nil, nil, nil, nil, nil, nil, 71,
+ nil, nil, nil, 131, nil, nil, nil, nil, nil, nil,
+ nil, 114, nil, 71, nil, 143, nil, nil, nil, nil,
+ nil, nil, nil, 36, nil, 114, nil, nil, 36, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, 160, nil, nil, nil,
+ nil, 162 ]
racc_goto_check = [
- 3, 2, 23, 14, 29, 19, 18, 38, 44, 27,
- 34, 43, 14, 36, 28, 36, 37, 14, 24, 12,
- 4, 23, 32, 21, 14, 19, 25, 41, 33, 39,
- 18, 41, 46, 40, 17, 42, 16, 13, 45, 14,
- 1, 4, 38, nil, 43, nil, nil, nil, 36, 34,
- 14, nil, nil, 44, 36, nil, 4, 12, nil, nil,
- 15, nil, nil, nil, nil, 15, 14, nil, nil, 29,
- 19, 14, 14, 14, 14, 23, 32, 23, 32, 18,
- 36, 12, nil, 14, nil, 14, 14, 24, 38, 4,
- 23, 32, 21, 46, 36, 25, nil, 14, 15, 20,
- nil, nil, 4, nil, 2, nil, 14, nil, nil, nil,
- 23, 32, 14, 20, 4, nil, 23, 32, 30, 15,
- 20, 15, 15, 2, nil, nil, 2, 14, 14, nil,
- nil, 15, nil, 14, 15, 20, 3, 26, 14, nil,
- nil, nil, 23, 32, nil, 4, nil, nil, 3, nil,
- 4, 3, 14, nil, 15, nil, 23, 32, 26, nil,
- 15, nil, nil, 2, nil, 3, nil, 20, 20, 20,
- nil, nil, 30, 26, 30, nil, nil, nil, nil, nil,
- nil, 20, 20, nil, nil, nil, 15, 30, nil, nil,
- nil, nil, nil, 20, nil, nil, nil, nil, nil, nil,
- 15, nil, 20, nil, nil, nil, 26, 30, 20, nil,
- nil, nil, nil, 30, nil, nil, nil, nil, nil, 26,
- nil, nil, nil, nil, 20, nil, nil, nil, nil, 20,
- nil, 26, nil, nil, 20, nil, nil, nil, nil, 30,
- nil, nil, nil, nil, nil, nil, nil, nil, 20, nil,
- nil, nil, nil, 30, nil, nil, nil, nil, nil, nil,
- nil, nil, 26, nil, nil, nil, nil, 26 ]
+ 3, 2, 24, 25, 22, 13, 39, 45, 47, 35,
+ 42, 15, 44, 28, 29, 21, 15, 19, 38, 26,
+ 42, 34, 24, 33, 40, 30, 15, 37, 41, 37,
+ 21, 18, 43, 15, 17, 14, 20, 21, 46, 1,
+ nil, nil, 39, 13, nil, nil, nil, 19, 15, 35,
+ 44, nil, 21, 45, 15, nil, nil, nil, 20, nil,
+ nil, nil, nil, 37, nil, nil, nil, nil, nil, 37,
+ 47, nil, nil, 13, 25, 22, 15, 24, 33, 24,
+ 33, 15, 15, 15, 15, 21, 21, 21, 39, 15,
+ 26, 30, 19, 24, 33, 37, 15, 15, nil, nil,
+ 21, 21, 20, nil, nil, nil, nil, 2, 15, 37,
+ nil, nil, 21, 24, 33, nil, 31, 15, 16, 24,
+ 33, 21, nil, 15, nil, nil, 2, 21, 16, nil,
+ nil, 2, nil, nil, nil, 4, nil, nil, 15, 15,
+ 3, nil, 4, 21, 15, 24, 33, nil, 21, 15,
+ nil, nil, 3, 21, nil, 3, 16, 4, 27, 24,
+ 33, nil, nil, 15, nil, nil, 2, 21, nil, 3,
+ nil, 31, 4, 31, nil, nil, nil, nil, nil, nil,
+ 27, nil, nil, 16, nil, 16, 16, 31, nil, nil,
+ nil, 16, nil, nil, nil, 27, nil, nil, nil, 16,
+ nil, nil, nil, nil, nil, nil, 4, 31, nil, nil,
+ nil, nil, nil, 31, nil, nil, nil, nil, nil, 16,
+ 4, nil, nil, nil, nil, 16, nil, nil, nil, 27,
+ nil, nil, 4, nil, nil, nil, nil, nil, nil, 31,
+ nil, nil, nil, 27, nil, nil, nil, nil, nil, nil,
+ nil, 16, nil, 31, nil, 27, nil, nil, nil, nil,
+ nil, nil, nil, 4, nil, 16, nil, nil, 4, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, 27, nil, nil, nil,
+ nil, 27 ]
racc_goto_pointer = [
- nil, 40, 1, -2, 9, nil, nil, nil, nil, nil,
- nil, nil, -1, -54, -8, 40, 11, -33, -19, -63,
- 88, -2, nil, -4, -7, 1, 126, -88, -18, -74,
- 93, nil, -3, -53, -71, nil, -66, -63, -72, -85,
- 4, -21, 16, -8, -21, -36, -42 ]
+ nil, 39, 1, -1, 124, nil, nil, nil, nil, nil,
+ nil, nil, nil, -11, -54, 0, 102, 8, -38, -9,
+ -34, 4, -22, nil, -4, -23, -7, 147, -87, -19,
+ -55, 90, nil, -3, -62, -74, nil, -54, -63, -75,
+ -93, -2, -39, 11, -9, -23, -38, -68 ]
racc_goto_default = [
- nil, nil, nil, 5, 8, 10, 12, 14, 16, 18,
- 21, 22, nil, 55, 4, 37, nil, nil, nil, nil,
- 17, nil, 73, 30, 31, 34, nil, 66, nil, nil,
- 41, 42, 45, nil, nil, 118, 33, nil, nil, nil,
- nil, nil, nil, nil, 86, nil, nil ]
+ nil, nil, nil, 2, 5, 8, 10, 12, 14, 17,
+ 20, 22, 23, nil, 51, 4, 39, nil, nil, nil,
+ nil, 19, nil, 75, 31, 32, 35, nil, 68, nil,
+ nil, 43, 44, 46, nil, nil, 121, 34, nil, nil,
+ nil, nil, nil, nil, nil, 88, nil, nil ]
racc_token_table = {
false => 0,
@@ -505,13 +517,12 @@ racc_token_table = {
:SEMIC => 37,
:CASE => 38,
:DEFAULT => 39,
- :INCLUDE => 40,
- :TAG => 41,
- :FUNCTION => 42 }
+ :FUNCTION => 40,
+ :AT => 41 }
racc_use_result_var = true
-racc_nt_base = 43
+racc_nt_base = 42
Racc_arg = [
racc_action_table,
@@ -570,14 +581,14 @@ Racc_token_to_s_table = [
'SEMIC',
'CASE',
'DEFAULT',
-'INCLUDE',
-'TAG',
'FUNCTION',
+'AT',
'$start',
'program',
'statements',
'statement',
'object',
+'collectable',
'assignment',
'casestatement',
'import',
@@ -675,8 +686,10 @@ module_eval <<'.,.,', 'grammar.ra', 39
# reduce 11 omitted
-module_eval <<'.,.,', 'grammar.ra', 60
- def _reduce_12( val, _values, result )
+ # reduce 12 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 61
+ def _reduce_13( val, _values, result )
args = aryfy(val[2])
result = AST::Function.new(
:line => @lexer.line,
@@ -689,8 +702,8 @@ module_eval <<'.,.,', 'grammar.ra', 60
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 70
- def _reduce_13( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 71
+ def _reduce_14( val, _values, result )
args = aryfy(val[1])
result = AST::Function.new(
:line => @lexer.line,
@@ -703,10 +716,10 @@ module_eval <<'.,.,', 'grammar.ra', 70
end
.,.,
- # reduce 14 omitted
+ # reduce 15 omitted
-module_eval <<'.,.,', 'grammar.ra', 89
- def _reduce_15( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 90
+ def _reduce_16( val, _values, result )
result = aryfy(val[0], val[2])
result.line = @lexer.line
result.file = @lexer.file
@@ -714,12 +727,12 @@ module_eval <<'.,.,', 'grammar.ra', 89
end
.,.,
- # reduce 16 omitted
-
# reduce 17 omitted
-module_eval <<'.,.,', 'grammar.ra', 123
- def _reduce_18( val, _values, result )
+ # reduce 18 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 124
+ def _reduce_19( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
raise Puppet::ParseError, "Invalid name"
end
@@ -751,8 +764,8 @@ module_eval <<'.,.,', 'grammar.ra', 123
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 137
- def _reduce_19( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 138
+ def _reduce_20( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
Puppet.notice "invalid name"
raise Puppet::ParseError, "Invalid name"
@@ -770,8 +783,8 @@ module_eval <<'.,.,', 'grammar.ra', 137
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 149
- def _reduce_20( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 150
+ def _reduce_21( val, _values, result )
# a template setting for a type
if val[0].instance_of?(AST::ASTArray)
raise Puppet::ParseError, "Invalid type"
@@ -787,8 +800,28 @@ module_eval <<'.,.,', 'grammar.ra', 149
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 157
- def _reduce_21( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 169
+ def _reduce_22( val, _values, result )
+ if val[1].is_a? AST::TypeDefaults
+ raise Puppet::ParseError, "Defaults are not collectable"
+ end
+
+ # Just mark our objects as collectable and pass them through.
+ if val[1].instance_of?(AST::ASTArray)
+ val[1].each do |obj|
+ obj.collectable = true
+ end
+ else
+ val[1].collectable = true
+ end
+
+ result = val[1]
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'grammar.ra', 177
+ def _reduce_23( val, _values, result )
result = AST::ObjectInst.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -798,10 +831,10 @@ module_eval <<'.,.,', 'grammar.ra', 157
end
.,.,
- # reduce 22 omitted
+ # reduce 24 omitted
-module_eval <<'.,.,', 'grammar.ra', 171
- def _reduce_23( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 191
+ def _reduce_25( val, _values, result )
if val[0].instance_of?(AST::ObjectInst)
result = AST::ASTArray.new(
:line => @lexer.line,
@@ -816,12 +849,12 @@ module_eval <<'.,.,', 'grammar.ra', 171
end
.,.,
- # reduce 24 omitted
+ # reduce 26 omitted
- # reduce 25 omitted
+ # reduce 27 omitted
-module_eval <<'.,.,', 'grammar.ra', 182
- def _reduce_26( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 202
+ def _reduce_28( val, _values, result )
result = AST::Name.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -831,8 +864,8 @@ module_eval <<'.,.,', 'grammar.ra', 182
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 190
- def _reduce_27( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 210
+ def _reduce_29( val, _values, result )
result = AST::Type.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -842,10 +875,6 @@ module_eval <<'.,.,', 'grammar.ra', 190
end
.,.,
- # reduce 28 omitted
-
- # reduce 29 omitted
-
# reduce 30 omitted
# reduce 31 omitted
@@ -854,8 +883,12 @@ module_eval <<'.,.,', 'grammar.ra', 190
# reduce 33 omitted
-module_eval <<'.,.,', 'grammar.ra', 213
- def _reduce_34( val, _values, result )
+ # reduce 34 omitted
+
+ # reduce 35 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 233
+ def _reduce_36( val, _values, result )
# this is distinct from referencing a variable
variable = AST::Name.new(
:line => @lexer.line,
@@ -873,8 +906,8 @@ module_eval <<'.,.,', 'grammar.ra', 213
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 222
- def _reduce_35( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 242
+ def _reduce_37( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -884,15 +917,15 @@ module_eval <<'.,.,', 'grammar.ra', 222
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 222
- def _reduce_36( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 242
+ def _reduce_38( val, _values, result )
result = val[0]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 235
- def _reduce_37( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 255
+ def _reduce_39( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -907,8 +940,8 @@ module_eval <<'.,.,', 'grammar.ra', 235
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 250
- def _reduce_38( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 270
+ def _reduce_40( val, _values, result )
leaf = AST::String.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -925,10 +958,10 @@ module_eval <<'.,.,', 'grammar.ra', 250
end
.,.,
- # reduce 39 omitted
+ # reduce 41 omitted
-module_eval <<'.,.,', 'grammar.ra', 263
- def _reduce_40( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 283
+ def _reduce_42( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
result = val[0].push(val[2])
else
@@ -942,10 +975,6 @@ module_eval <<'.,.,', 'grammar.ra', 263
end
.,.,
- # reduce 41 omitted
-
- # reduce 42 omitted
-
# reduce 43 omitted
# reduce 44 omitted
@@ -962,8 +991,12 @@ module_eval <<'.,.,', 'grammar.ra', 263
# reduce 50 omitted
-module_eval <<'.,.,', 'grammar.ra', 286
- def _reduce_51( val, _values, result )
+ # reduce 51 omitted
+
+ # reduce 52 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 306
+ def _reduce_53( val, _values, result )
args = aryfy(val[2])
result = AST::Function.new(
:line => @lexer.line,
@@ -976,8 +1009,8 @@ module_eval <<'.,.,', 'grammar.ra', 286
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 294
- def _reduce_52( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 314
+ def _reduce_54( val, _values, result )
result = AST::String.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -987,8 +1020,8 @@ module_eval <<'.,.,', 'grammar.ra', 294
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 300
- def _reduce_53( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 320
+ def _reduce_55( val, _values, result )
result = AST::FlatString.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -998,8 +1031,8 @@ module_eval <<'.,.,', 'grammar.ra', 300
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 308
- def _reduce_54( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 328
+ def _reduce_56( val, _values, result )
result = AST::Boolean.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1009,8 +1042,8 @@ module_eval <<'.,.,', 'grammar.ra', 308
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 318
- def _reduce_55( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 338
+ def _reduce_57( val, _values, result )
result = AST::ObjectRef.new(
:pin => '[]',
:line => @lexer.line,
@@ -1022,8 +1055,8 @@ module_eval <<'.,.,', 'grammar.ra', 318
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 335
- def _reduce_56( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 355
+ def _reduce_58( val, _values, result )
options = val[3]
unless options.instance_of?(AST::ASTArray)
options = AST::ASTArray.new(
@@ -1042,10 +1075,10 @@ module_eval <<'.,.,', 'grammar.ra', 335
end
.,.,
- # reduce 57 omitted
+ # reduce 59 omitted
-module_eval <<'.,.,', 'grammar.ra', 349
- def _reduce_58( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 369
+ def _reduce_60( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push val[1]
result = val[0]
@@ -1060,8 +1093,8 @@ module_eval <<'.,.,', 'grammar.ra', 349
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 359
- def _reduce_59( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 379
+ def _reduce_61( val, _values, result )
result = AST::CaseOpt.new(
:pin => ":",
:value => val[0],
@@ -1073,8 +1106,8 @@ module_eval <<'.,.,', 'grammar.ra', 359
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 371
- def _reduce_60( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 391
+ def _reduce_62( val, _values, result )
result = AST::CaseOpt.new(
:pin => ":",
:value => val[0],
@@ -1090,10 +1123,10 @@ module_eval <<'.,.,', 'grammar.ra', 371
end
.,.,
- # reduce 61 omitted
+ # reduce 63 omitted
-module_eval <<'.,.,', 'grammar.ra', 385
- def _reduce_62( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 405
+ def _reduce_64( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -1108,8 +1141,8 @@ module_eval <<'.,.,', 'grammar.ra', 385
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 395
- def _reduce_63( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 415
+ def _reduce_65( val, _values, result )
result = AST::Selector.new(
:pin => "?",
:line => @lexer.line,
@@ -1121,19 +1154,19 @@ module_eval <<'.,.,', 'grammar.ra', 395
end
.,.,
- # reduce 64 omitted
+ # reduce 66 omitted
-module_eval <<'.,.,', 'grammar.ra', 397
- def _reduce_65( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 417
+ def _reduce_67( val, _values, result )
result = val[1]
result
end
.,.,
- # reduce 66 omitted
+ # reduce 68 omitted
-module_eval <<'.,.,', 'grammar.ra', 412
- def _reduce_67( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 432
+ def _reduce_69( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -1148,8 +1181,8 @@ module_eval <<'.,.,', 'grammar.ra', 412
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 422
- def _reduce_68( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 442
+ def _reduce_70( val, _values, result )
result = AST::ObjectParam.new(
:pin => "=>",
:line => @lexer.line,
@@ -1161,10 +1194,6 @@ module_eval <<'.,.,', 'grammar.ra', 422
end
.,.,
- # reduce 69 omitted
-
- # reduce 70 omitted
-
# reduce 71 omitted
# reduce 72 omitted
@@ -1173,8 +1202,12 @@ module_eval <<'.,.,', 'grammar.ra', 422
# reduce 74 omitted
-module_eval <<'.,.,', 'grammar.ra', 436
- def _reduce_75( val, _values, result )
+ # reduce 75 omitted
+
+ # reduce 76 omitted
+
+module_eval <<'.,.,', 'grammar.ra', 456
+ def _reduce_77( val, _values, result )
result = AST::Default.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1184,8 +1217,8 @@ module_eval <<'.,.,', 'grammar.ra', 436
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 498
- def _reduce_76( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 518
+ def _reduce_78( val, _values, result )
# importing files
# yuk, i hate keywords
# we'll probably have to have some kind of search path eventually
@@ -1249,8 +1282,8 @@ module_eval <<'.,.,', 'grammar.ra', 498
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 509
- def _reduce_77( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 529
+ def _reduce_79( val, _values, result )
result = AST::CompDef.new(
:type => AST::Name.new(:value => val[1], :line => @lexer.line),
:args => val[2],
@@ -1263,8 +1296,8 @@ module_eval <<'.,.,', 'grammar.ra', 509
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 522
- def _reduce_78( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 542
+ def _reduce_80( val, _values, result )
result = AST::CompDef.new(
:type => AST::Name.new(:value => val[1], :line => @lexer.line),
:args => val[2],
@@ -1281,8 +1314,8 @@ module_eval <<'.,.,', 'grammar.ra', 522
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 539
- def _reduce_79( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 559
+ def _reduce_81( val, _values, result )
#:args => val[2],
args = {
:type => AST::Name.new(:value => val[1], :line => @lexer.line),
@@ -1300,8 +1333,8 @@ module_eval <<'.,.,', 'grammar.ra', 539
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 556
- def _reduce_80( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 576
+ def _reduce_82( val, _values, result )
args = {
:type => AST::Name.new(:value => val[1], :line => @lexer.line),
:file => @lexer.file,
@@ -1322,8 +1355,8 @@ module_eval <<'.,.,', 'grammar.ra', 556
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 577
- def _reduce_81( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 597
+ def _reduce_83( val, _values, result )
unless val[1].instance_of?(AST::ASTArray)
val[1] = AST::ASTArray.new(
:line => val[1].line,
@@ -1346,8 +1379,8 @@ module_eval <<'.,.,', 'grammar.ra', 577
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 600
- def _reduce_82( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 620
+ def _reduce_84( val, _values, result )
unless val[1].instance_of?(AST::ASTArray)
val[1] = AST::ASTArray.new(
:line => val[1].line,
@@ -1374,10 +1407,10 @@ module_eval <<'.,.,', 'grammar.ra', 600
end
.,.,
- # reduce 83 omitted
+ # reduce 85 omitted
-module_eval <<'.,.,', 'grammar.ra', 614
- def _reduce_84( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 634
+ def _reduce_86( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
result = val[0]
result.push val[1]
@@ -1392,8 +1425,8 @@ module_eval <<'.,.,', 'grammar.ra', 614
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 622
- def _reduce_85( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 642
+ def _reduce_87( val, _values, result )
result = AST::HostName.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1403,8 +1436,8 @@ module_eval <<'.,.,', 'grammar.ra', 622
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 628
- def _reduce_86( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 648
+ def _reduce_88( val, _values, result )
result = AST::HostName.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1414,8 +1447,8 @@ module_eval <<'.,.,', 'grammar.ra', 628
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 636
- def _reduce_87( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 656
+ def _reduce_89( val, _values, result )
result = AST::ASTArray.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1425,17 +1458,17 @@ module_eval <<'.,.,', 'grammar.ra', 636
end
.,.,
- # reduce 88 omitted
+ # reduce 90 omitted
-module_eval <<'.,.,', 'grammar.ra', 641
- def _reduce_89( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 661
+ def _reduce_91( val, _values, result )
result = val[1]
result
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 652
- def _reduce_90( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 672
+ def _reduce_92( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -1449,10 +1482,10 @@ module_eval <<'.,.,', 'grammar.ra', 652
end
.,.,
- # reduce 91 omitted
+ # reduce 93 omitted
-module_eval <<'.,.,', 'grammar.ra', 666
- def _reduce_92( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 686
+ def _reduce_94( val, _values, result )
if val[0].instance_of?(AST::ASTArray)
val[0].push(val[2])
result = val[0]
@@ -1467,8 +1500,8 @@ module_eval <<'.,.,', 'grammar.ra', 666
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 674
- def _reduce_93( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 694
+ def _reduce_95( val, _values, result )
result = AST::CompArgument.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1478,8 +1511,8 @@ module_eval <<'.,.,', 'grammar.ra', 674
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 681
- def _reduce_94( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 701
+ def _reduce_96( val, _values, result )
result = AST::CompArgument.new(
:line => @lexer.line,
:file => @lexer.file,
@@ -1489,10 +1522,10 @@ module_eval <<'.,.,', 'grammar.ra', 681
end
.,.,
- # reduce 95 omitted
+ # reduce 97 omitted
-module_eval <<'.,.,', 'grammar.ra', 690
- def _reduce_96( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 710
+ def _reduce_98( val, _values, result )
result = AST::Name.new(
:value => val[1],
:file => @lexer.file,
@@ -1502,8 +1535,8 @@ module_eval <<'.,.,', 'grammar.ra', 690
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 699
- def _reduce_97( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 719
+ def _reduce_99( val, _values, result )
name = val[0].sub(/^\$/,'')
result = AST::Variable.new(
:line => @lexer.line,
@@ -1514,8 +1547,8 @@ module_eval <<'.,.,', 'grammar.ra', 699
end
.,.,
-module_eval <<'.,.,', 'grammar.ra', 711
- def _reduce_98( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 731
+ def _reduce_100( val, _values, result )
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -1529,14 +1562,14 @@ module_eval <<'.,.,', 'grammar.ra', 711
end
.,.,
- # reduce 99 omitted
+ # reduce 101 omitted
- # reduce 100 omitted
+ # reduce 102 omitted
- # reduce 101 omitted
+ # reduce 103 omitted
-module_eval <<'.,.,', 'grammar.ra', 716
- def _reduce_102( val, _values, result )
+module_eval <<'.,.,', 'grammar.ra', 736
+ def _reduce_104( val, _values, result )
result = nil
result
end
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb
index f7dde32c8..54f0f42ad 100644
--- a/lib/puppet/parser/scope.rb
+++ b/lib/puppet/parser/scope.rb
@@ -855,6 +855,7 @@ module Puppet::Parser
# Builtin types should be passed out as they are, but defined
# types need to be evaluated. We have to wait until this
# point so that subclass overrides can happen.
+
# Wait until the last minute to set tags, although this
# probably should not matter
child.tags = self.tags
@@ -870,15 +871,30 @@ module Puppet::Parser
# Now that all that is done, check to see what kind of object
# it is.
if objecttype = lookuptype(child.type)
- # It's a defined type, so evaluate it
+ # It's a defined type, so evaluate it. Retain whether
+ # the object is collectable.
result = objecttype.safeevaluate(
:name => child.name,
:type => child.type,
:arguments => child.to_hash,
- :scope => self
+ :scope => self,
+ :collectable => child.collectable
)
+
+ # If the child is collectable, then mark all of the
+ # results as collectable. This is how we retain
+ # collectability through components and such.
+ if child.collectable
+ result.delve do |object|
+ if object.is_a? Puppet::TransObject
+ debug "Collecting %s[%s]" %
+ [object.type, object.name]
+ object.collectable = true
+ end
+ end
+ end
else
- # It's a builtin type, so just chunk it on in
+ # It's a builtin type, so just return it directly
result = child
end
else
@@ -940,104 +956,6 @@ module Puppet::Parser
end
end
- # Convert our scope to a list of Transportable objects.
- def oldto_trans
- results = []
-
- # Iterate across our child scopes and call to_trans on them
- @children.each { |child|
- if child.is_a?(Scope)
- cresult = child.to_trans
-
- # Scopes normally result in a TransBucket, but they could
- # also result in a normal array; if that happens, get rid
- # of the array.
- unless cresult.is_a?(Puppet::TransBucket)
- cresult.each { |result|
- results.push(result)
- }
- else
- unless cresult.empty?
- # Otherwise, just add it to our list of results.
- results.push(cresult)
- end
- end
- elsif child.is_a?(Puppet::TransObject)
- if child.empty?
- next
- end
- # Wait until the last minute to set tags, although this
- # probably should not matter
- child.tags = self.tags
-
- # Add any defaults.
- self.adddefaults(child)
-
- # Then make sure this child's tags are stored in the
- # central table. This should maybe be in the evaluate
- # methods, but, eh.
- @topscope.addtags(child)
- results.push(child)
- else
- raise Puppet::DevError,
- "Puppet::Parse::Scope cannot handle objects of type %s" %
- child.class
- end
- }
-
- # Get rid of any nil objects.
- results = results.reject { |child|
- child.nil?
- }
-
- # If we have a name and type, then make a TransBucket, which
- # becomes a component.
- # Else, just stack all of the objects into the current bucket.
- if @type
- bucket = Puppet::TransBucket.new
-
- if defined? @name and @name
- bucket.name = @name
- end
-
- # it'd be nice not to have to do this...
- results.each { |result|
- #Puppet.warning "Result type is %s" % result.class
- bucket.push(result)
- }
- if defined? @type
- bucket.type = @type
- else
- raise Puppet::ParseError,
- "No type for scope %s" % @name
- end
-
- if defined? @keyword
- bucket.keyword = @keyword
- end
- #Puppet.debug(
- # "TransBucket with name %s and type %s in scope %s" %
- # [@name,@type,self.object_id]
- #)
-
- # now find metaparams
- @symtable.each { |var,value|
- if Puppet::Type.metaparam?(var.intern)
- #Puppet.debug("Adding metaparam %s" % var)
- bucket.param(var,value)
- else
- #Puppet.debug("%s is not a metaparam" % var)
- end
- }
- #Puppet.debug "Returning bucket %s from scope %s" %
- # [bucket.name,self.object_id]
- return bucket
- else
- Puppet.debug "nameless scope; just returning a list"
- return results
- end
- end
-
protected
# This method abstracts recursive searching. It accepts the type