[Pkg-puppet-devel] [SCM] Puppet packaging for Debian branch, upstream, updated. 0.25.5-639-g8f94f35
test branch
puppet-dev at googlegroups.com
Wed Jul 14 10:33:09 UTC 2010
The following commit has been merged in the upstream branch:
commit d61a69a0e5a87a95846a4d39115eac80e4984cac
Author: Luke Kanies <luke at puppetlabs.com>
Date: Wed Apr 28 21:52:06 2010 -0700
Fixing #3668 - fixed autoloading classes from modules
This involved essentially moving all of the importing and loading
code out of the Parser and into a new 'TypeLoader' class.
The parser and the ResourceTypeCollection classes now delegate
to that class for all file handling. Most of the code paths are
also now much cleaner, and a bit of redundancy was removed.
Signed-off-by: Luke Kanies <luke at puppetlabs.com>
diff --git a/lib/puppet/parser/grammar.ra b/lib/puppet/parser/grammar.ra
index 5b9a609..e125e32 100644
--- a/lib/puppet/parser/grammar.ra
+++ b/lib/puppet/parser/grammar.ra
@@ -633,12 +633,11 @@ selectlhand: name
| regex
# These are only used for importing, and we don't interpolate there.
-qtexts: quotedtext { result = [val[0].value] }
- | qtexts COMMA quotedtext {
- results = val[0] << val[2].value
-}
+string: STRING { result = [val[0][:value]] }
+strings: string
+ | strings COMMA string { result = val[0] += val[2] }
-import: IMPORT qtexts {
+import: IMPORT strings {
val[1].each do |file|
import(file)
end
diff --git a/lib/puppet/parser/parser.rb b/lib/puppet/parser/parser.rb
index 5fecc54..8937fe1 100644
--- a/lib/puppet/parser/parser.rb
+++ b/lib/puppet/parser/parser.rb
@@ -21,7 +21,7 @@ module Puppet
module Parser
class Parser < Racc::Parser
-module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 851)
+module_eval(<<'...end grammar.ra/module_eval...', 'grammar.ra', 850)
# It got too annoying having code in a file that needs to be compiled.
require 'puppet/parser/parser_support'
@@ -36,600 +36,606 @@ require 'puppet/parser/parser_support'
##### State transition tables begin ###
racc_action_table = [
- 60, 65, 60, 65, 95, 120, 95, 215, 97, 186,
- 71, 113, 107, 186, 108, 46, 284, -157, 324, 46,
- 185, 60, 65, 149, 185, 190, 325, 109, 153, 190,
- 121, 46, 287, 59, 280, 59, 314, 72, 132, 72,
- 75, 80, 279, 80, 277, 278, 130, 169, 68, 221,
- 77, 105, 77, 51, 59, 160, 53, 51, 72, 75,
- 53, 52, 80, 52, 60, 65, 66, 68, 215, 51,
- 238, 77, 53, 326, 60, 65, 52, 166, 170, 288,
- 52, 153, 52, 172, 156, 157, 158, 159, 161, 289,
- 166, 170, 52, 60, 65, 60, 65, 185, 277, 278,
- 290, 72, 236, 166, 170, 80, 186, 185, 222, 43,
- 130, 72, 236, 291, 77, 80, 243, 185, 41, 42,
- 130, 223, 190, 215, 77, 52, 59, 292, 185, 169,
- 72, 75, 72, 236, 80, 52, 80, 160, 66, 68,
- 34, 130, 186, 77, 36, 77, 60, 65, 60, 65,
- 95, 11, 97, 185, 52, 181, 52, 201, 190, 143,
- 60, 65, 202, -158, 71, 172, 156, 157, 158, 159,
- 161, 232, 166, 170, 34, 230, 231, 267, 36, 59,
- 266, 294, 62, 72, 75, 11, 180, 80, 60, 65,
- 60, 65, 68, 59, 298, 320, 77, 72, 75, 282,
- -159, 80, -154, 230, 231, 66, 68, 52, 60, 65,
- 77, 34, 95, 34, 97, 36, 196, 36, 230, 347,
- 201, 52, 11, 16, 11, 202, 180, 60, 65, 302,
- 88, 95, 265, 97, 60, 65, 230, 264, 95, 196,
- 97, 59, 157, 158, 143, 72, 75, 166, 170, 80,
- 305, 157, 158, 107, 68, 93, 166, 170, 77, -156,
- 59, 83, 60, 65, 72, 75, 308, 59, 80, 52,
- -153, 72, 75, 68, 275, 80, -155, 77, 277, 278,
- 68, 60, 65, 311, 77, 95, 153, 97, 52, 172,
- 156, 157, 158, 159, 161, 52, 166, 170, 152, 268,
- 60, 65, -153, 88, 95, 52, 97, 60, 65, -156,
- -154, 95, 182, 97, 59, 52, 149, -171, 72, 75,
- -155, 146, 80, 43, -157, 60, 65, 68, 93, 88,
- 183, 77, -158, 59, 83, 317, 194, 72, 75, 318,
- 59, 80, 52, 196, 72, 75, 68, 143, 80, 199,
- 77, 200, 206, 68, 93, 209, 216, 77, 185, 108,
- 83, 52, 72, 236, 219, 337, 80, 113, 52, 110,
- 212, 130, 60, 65, -155, 77, 95, 55, 97, 54,
- 172, 156, 157, 158, 216, 45, 52, 166, 170, 214,
- 317, 60, 65, 351, 88, 95, -153, 97, 60, 65,
- 353, -158, 95, -155, 97, 59, -153, -156, -154, 72,
- 75, 354, 216, 80, -206, -156, 60, 65, 68, 93,
- 88, 357, 77, 219, 59, 83, 37, 218, 72, 75,
- -154, 59, 80, 52, nil, 72, 75, 68, nil, 80,
- nil, 77, nil, nil, 68, 93, nil, nil, 77, 185,
- nil, 83, 52, 72, 236, nil, nil, 80, nil, 52,
- nil, nil, 130, 60, 65, nil, 77, 95, nil, 97,
- nil, 172, 156, 157, 158, 159, 161, 52, 166, 170,
- nil, 60, 65, nil, nil, 88, nil, nil, 323, nil,
- 172, 156, 157, 158, nil, nil, 59, 166, 170, nil,
- 72, 75, nil, nil, 80, nil, nil, nil, nil, 68,
- 93, 60, 65, 77, 185, 95, 83, 97, 72, 236,
- nil, nil, 80, nil, 52, nil, nil, 130, nil, nil,
- nil, 77, nil, 88, nil, nil, nil, 60, 65, nil,
- nil, 95, 52, 97, 59, nil, nil, nil, 72, 75,
- nil, nil, 80, nil, nil, nil, nil, 68, 93, 60,
- 65, 77, nil, 95, 83, 97, nil, nil, nil, nil,
- 59, nil, 52, nil, 72, 75, nil, nil, 80, nil,
- nil, 88, nil, 68, nil, 60, 65, 77, nil, 95,
- nil, 97, 59, nil, nil, nil, 72, 75, 52, nil,
- 80, nil, nil, nil, nil, 68, 93, 88, nil, 77,
- nil, nil, 83, nil, nil, 60, 65, nil, 59, 95,
- 52, 97, 72, 75, nil, nil, 80, nil, nil, nil,
- nil, 68, 93, nil, nil, 77, nil, 88, 83, nil,
- 60, 65, nil, nil, nil, nil, 52, nil, 59, nil,
+ 60, 65, 60, 65, 95, 121, 95, 216, 97, 187,
+ 71, 113, 108, 187, 109, 46, 285, 217, 281, 46,
+ 186, 60, 65, 216, 186, 191, 280, 110, 154, 191,
+ 122, 46, 144, 59, 325, 59, 154, 72, 133, 72,
+ 75, 80, 326, 80, 278, 279, 131, 170, 68, 222,
+ 77, 106, 77, 50, 59, 161, 53, 50, 72, 75,
+ 53, 52, 80, 52, 60, 65, 66, 68, 150, 50,
+ 239, 77, 53, 327, 60, 65, 52, 167, 171, 286,
+ 52, 315, 52, 173, 157, 158, 159, 160, 162, 287,
+ 167, 171, 52, 60, 65, 60, 65, 186, 278, 279,
+ 223, 72, 237, 231, 348, 80, 187, 186, 289, 43,
+ 131, 72, 237, 224, 77, 80, 244, 186, 41, 42,
+ 131, 290, 191, 288, 77, 52, 59, 105, 186, 170,
+ 72, 75, 72, 237, 80, 52, 80, 161, 66, 68,
+ 34, 131, 187, 77, 36, 77, 60, 65, 60, 65,
+ 95, 11, 97, 186, 52, 182, 52, 201, 191, -157,
+ 60, 65, 202, 293, 71, 173, 157, 158, 159, 160,
+ 162, 283, 167, 171, 34, 231, 232, 268, 36, 59,
+ 267, 296, 62, 72, 75, 11, 181, 80, 60, 65,
+ 167, 171, 68, 59, -155, 321, 77, 72, 75, 233,
+ -158, 80, 299, 231, 232, 66, 68, 52, 60, 65,
+ 77, 34, 95, 34, 97, 36, -159, 36, -154, 197,
+ 201, 52, 11, 16, 11, 202, 181, 60, 65, 303,
+ 88, 95, 276, 97, 60, 65, 278, 279, 95, 197,
+ 97, 59, 158, 159, 144, 72, 75, 167, 171, 80,
+ 306, 108, -156, 309, 68, 93, 88, -153, 77, 269,
+ 59, 83, 312, 154, 72, 75, 153, 59, 80, 52,
+ -153, 72, 75, 68, 266, 80, 52, 77, 231, 265,
+ 68, 93, -156, -154, 77, 60, 65, 83, 52, 95,
+ 183, 97, 158, 159, 52, 52, 184, 167, 171, 150,
+ -172, -155, 147, 43, 60, 65, -157, 88, 95, 195,
+ 97, 60, 65, -158, 318, 95, 197, 97, 59, 319,
+ 200, 144, 72, 75, 206, 207, 80, 210, 213, 60,
+ 65, 68, 93, 216, 109, 77, 220, 59, 83, 338,
+ 113, 72, 75, 111, 59, 80, 52, -155, 72, 75,
+ 68, 105, 80, 55, 77, 54, 217, 68, 45, 215,
+ 318, 77, 186, 352, -153, 52, 72, 237, 354, -158,
+ 80, -155, 52, -153, -156, 131, 60, 65, -154, 77,
+ 95, 355, 97, 217, 173, 157, 158, 159, -207, -156,
+ 52, 167, 171, 358, 220, 60, 65, 37, 88, 95,
+ 219, 97, 60, 65, -154, nil, 95, nil, 97, 59,
+ nil, nil, nil, 72, 75, nil, nil, 80, nil, nil,
+ 60, 65, 68, 93, 88, nil, 77, nil, 59, 83,
+ nil, nil, 72, 75, nil, 59, 80, 52, nil, 72,
+ 75, 68, nil, 80, nil, 77, nil, nil, 68, 93,
+ nil, nil, 77, 186, nil, 83, 52, 72, 237, nil,
+ nil, 80, nil, 52, nil, nil, 131, 60, 65, nil,
+ 77, 95, nil, 97, nil, 173, 157, 158, 159, 160,
+ 162, 52, 167, 171, nil, 60, 65, nil, nil, 88,
+ nil, nil, 324, nil, 173, 157, 158, 159, nil, nil,
+ 59, 167, 171, nil, 72, 75, nil, nil, 80, nil,
+ nil, nil, nil, 68, 93, 60, 65, 77, 186, 95,
+ 83, 97, 72, 237, nil, nil, 80, nil, 52, nil,
+ nil, 131, nil, nil, nil, 77, nil, 88, nil, nil,
+ nil, 60, 65, nil, nil, 95, 52, 97, 59, nil,
nil, nil, 72, 75, nil, nil, 80, nil, nil, nil,
- nil, 68, 93, 144, nil, 77, 60, 65, 83, nil,
- 95, nil, 97, 59, nil, nil, 52, 72, 75, nil,
- nil, 80, nil, nil, nil, 66, 68, nil, 88, nil,
- 77, nil, 60, 65, nil, nil, 95, nil, 97, 59,
+ nil, 68, 93, 60, 65, 77, nil, 95, 83, 97,
+ nil, nil, nil, nil, 59, nil, 52, nil, 72, 75,
+ nil, nil, 80, nil, nil, 88, nil, 68, nil, 60,
+ 65, 77, nil, 95, nil, 97, 59, nil, nil, nil,
+ 72, 75, 52, nil, 80, nil, nil, nil, nil, 68,
+ 93, 88, nil, 77, nil, nil, 83, nil, nil, 60,
+ 65, nil, 59, 95, 52, 97, 72, 75, nil, nil,
+ 80, nil, nil, nil, nil, 68, 93, nil, nil, 77,
+ nil, 88, 83, nil, 60, 65, nil, nil, nil, nil,
+ 52, nil, 59, nil, nil, nil, 72, 75, nil, nil,
+ 80, nil, nil, nil, nil, 68, 93, 145, nil, 77,
+ 60, 65, 83, nil, 95, nil, 97, 59, nil, nil,
+ 52, 72, 75, nil, nil, 80, nil, nil, nil, 66,
+ 68, nil, 88, nil, 77, nil, 60, 65, nil, nil,
+ 95, nil, 97, 59, nil, 52, nil, 72, 75, nil,
+ nil, 80, nil, nil, nil, nil, 68, 93, 88, nil,
+ 77, 60, 65, 83, nil, 95, nil, 97, nil, 59,
nil, 52, nil, 72, 75, nil, nil, 80, nil, nil,
- nil, nil, 68, 93, 88, nil, 77, 60, 65, 83,
- nil, 95, nil, 97, nil, 59, nil, 52, nil, 72,
- 75, nil, nil, 80, nil, nil, nil, nil, 68, 93,
- nil, nil, 77, 60, 65, 83, nil, 95, nil, 97,
- 59, nil, nil, 52, 72, 75, nil, nil, 80, nil,
- nil, nil, nil, 68, nil, 88, nil, 77, nil, 60,
- 65, nil, nil, 95, nil, 97, 59, nil, 52, nil,
- 72, 75, nil, nil, 80, nil, nil, 60, 65, 68,
- 93, 88, nil, 77, 60, 65, 83, nil, 95, nil,
- 97, nil, 59, nil, 52, nil, 72, 75, 60, 65,
- 80, nil, 95, nil, 97, 68, 93, nil, nil, 77,
- 185, nil, 83, nil, 72, 236, nil, 59, 80, nil,
- 52, 72, 75, 130, nil, 80, nil, 77, 60, 65,
- 68, 59, nil, nil, 77, 72, 75, nil, 52, 80,
- nil, nil, nil, nil, 68, 52, 60, 65, 77, nil,
- 95, 307, 97, nil, nil, nil, nil, nil, nil, 52,
- nil, 59, nil, nil, nil, 72, 75, nil, 88, 80,
- nil, 60, 65, 66, 68, 95, nil, 97, 77, 59,
- nil, nil, nil, 72, 75, nil, nil, 80, nil, 52,
nil, nil, 68, 93, nil, nil, 77, 60, 65, 83,
nil, 95, nil, 97, 59, nil, nil, 52, 72, 75,
- nil, nil, 80, nil, nil, nil, nil, 68, 60, 65,
- nil, 77, 95, nil, 97, nil, nil, nil, nil, nil,
+ nil, nil, 80, nil, nil, nil, nil, 68, nil, 88,
+ nil, 77, nil, 60, 65, nil, nil, 95, nil, 97,
59, nil, 52, nil, 72, 75, nil, nil, 80, nil,
- 88, nil, nil, 68, 60, 65, nil, 77, 95, nil,
- nil, 59, nil, nil, nil, 72, 75, nil, 52, 80,
- nil, nil, nil, nil, 68, 93, 60, 65, 77, nil,
- 95, 83, 97, nil, nil, nil, nil, 59, nil, 52,
- nil, 72, 236, nil, nil, 80, nil, nil, 88, nil,
- 130, nil, 60, 65, 77, nil, 95, nil, 97, 59,
- nil, nil, nil, 72, 75, 52, nil, 80, nil, nil,
- nil, nil, 68, 93, 88, nil, 77, nil, nil, 83,
- nil, nil, 60, 65, nil, 59, 95, 52, 97, 72,
- 75, nil, nil, 80, nil, nil, nil, nil, 68, 93,
- nil, nil, 77, nil, 88, 83, nil, nil, 60, 65,
- nil, nil, 95, 52, 97, 59, nil, nil, nil, 72,
- 75, nil, nil, 80, nil, nil, 60, 65, 68, 93,
- 88, nil, 77, nil, nil, 83, nil, nil, nil, nil,
- nil, 59, nil, 52, nil, 72, 75, nil, nil, 80,
- nil, nil, nil, nil, 68, 93, 60, 65, 77, 185,
- 95, 83, 97, 72, 236, 171, nil, 80, nil, 52,
- nil, nil, 130, nil, 164, 169, 77, nil, 88, nil,
- nil, nil, nil, 160, 162, 165, 168, 52, nil, 59,
- nil, nil, nil, 72, 75, 60, 65, 80, nil, 95,
- 174, 97, 68, 93, nil, nil, 77, 163, 167, 83,
- nil, 172, 156, 157, 158, 159, 161, 52, 166, 170,
- 60, 65, nil, nil, 95, nil, 97, nil, 59, nil,
- nil, nil, 72, 75, nil, nil, 80, nil, nil, nil,
- nil, 68, 88, nil, nil, 77, 60, 65, nil, nil,
- 95, nil, 97, 59, nil, nil, 52, 72, 75, nil,
+ nil, 60, 65, 68, 93, 88, nil, 77, 60, 65,
+ 83, nil, 95, nil, 97, nil, 59, nil, 52, nil,
+ 72, 75, 60, 65, 80, nil, 95, nil, 97, 68,
+ 93, nil, nil, 77, 186, nil, 83, nil, 72, 237,
+ nil, 59, 80, nil, 52, 72, 75, 131, nil, 80,
+ nil, 77, 60, 65, 68, 59, nil, nil, 77, 72,
+ 75, nil, 52, 80, nil, nil, nil, nil, 68, 52,
+ 60, 65, 77, nil, 95, 308, 97, nil, nil, nil,
+ nil, nil, nil, 52, nil, 59, nil, nil, nil, 72,
+ 75, nil, 88, 80, nil, 60, 65, 66, 68, 95,
+ nil, 97, 77, 59, nil, nil, nil, 72, 75, nil,
+ nil, 80, nil, 52, nil, nil, 68, 93, nil, nil,
+ 77, 60, 65, 83, nil, 95, nil, 97, 59, nil,
+ nil, 52, 72, 75, nil, nil, 80, nil, nil, nil,
+ nil, 68, 60, 65, nil, 77, 95, nil, 97, nil,
+ nil, nil, nil, nil, 59, nil, 52, nil, 72, 75,
+ nil, nil, 80, nil, 88, nil, nil, 68, 60, 65,
+ nil, 77, 95, nil, nil, 59, nil, nil, nil, 72,
+ 75, nil, 52, 80, nil, nil, nil, nil, 68, 93,
+ 60, 65, 77, nil, 95, 83, 97, nil, nil, nil,
+ nil, 59, nil, 52, nil, 72, 237, nil, nil, 80,
+ nil, nil, 88, nil, 131, nil, 60, 65, 77, nil,
+ 95, nil, 97, 59, nil, nil, nil, 72, 75, 52,
nil, 80, nil, nil, nil, nil, 68, 93, 88, nil,
- 77, nil, nil, 83, nil, nil, nil, nil, nil, 59,
- nil, 52, nil, 72, 75, nil, nil, 80, 226, 227,
- nil, nil, 68, 93, nil, nil, 77, nil, nil, 83,
- nil, 164, 169, nil, nil, nil, nil, 52, nil, nil,
- 160, 162, 165, 168, 164, 169, nil, nil, nil, nil,
- nil, nil, 245, 160, 162, 165, 168, nil, nil, nil,
- nil, nil, nil, nil, 163, 167, nil, nil, 172, 156,
- 157, 158, 159, 161, nil, 166, 170, 163, 167, nil,
- nil, 172, 156, 157, 158, 159, 161, nil, 166, 170,
- 164, 169, nil, nil, nil, nil, nil, nil, nil, 160,
- 162, 165, 168, 164, 169, nil, nil, nil, nil, nil,
- nil, nil, 160, 162, 165, 168, nil, nil, nil, nil,
- nil, nil, nil, 163, 167, nil, nil, 172, 156, 157,
- 158, 159, 161, nil, 166, 170, 163, 167, nil, nil,
- 172, 156, 157, 158, 159, 161, nil, 166, 170, 164,
- 169, nil, nil, nil, nil, nil, nil, nil, 160, 162,
- 165, 168, 164, 169, nil, nil, nil, nil, nil, nil,
- nil, 160, 162, 165, 168, nil, nil, nil, nil, nil,
- nil, nil, nil, 167, nil, nil, 172, 156, 157, 158,
- 159, 161, nil, 166, 170, nil, nil, nil, nil, 172,
- 156, 157, 158, 159, 161, nil, 166, 170, 164, 169,
- nil, nil, nil, nil, nil, nil, nil, 160, 162, 165,
- 168, 169, nil, nil, nil, nil, nil, nil, nil, 160,
- 169, nil, nil, nil, nil, nil, nil, nil, 160, nil,
- nil, 163, 167, nil, nil, 172, 156, 157, 158, 159,
- 161, nil, 166, 170, 262, nil, nil, 172, 156, 157,
- 158, 159, 161, nil, 166, 170, 172, 156, 157, 158,
- 159, 161, nil, 166, 170, 26, 338, 30, 1, nil,
- 8, 12, nil, 19, nil, 24, nil, 28, nil, 2,
- nil, nil, 11, 16, nil, 315, nil, 26, nil, 30,
- 1, nil, 8, 12, nil, 19, nil, 24, nil, 28,
- nil, 2, nil, nil, 11, 16, 26, 343, 30, 1,
- nil, 8, 12, nil, 19, nil, 24, nil, 28, nil,
- 2, nil, nil, 11, 16, nil, 344, nil, 26, nil,
- 30, 1, nil, 8, 12, nil, 19, nil, 24, nil,
- 28, nil, 2, nil, nil, 11, 16, 26, 297, 30,
- 1, nil, 8, 12, nil, 19, nil, 24, nil, 28,
- nil, 2, nil, nil, 11, 16, nil, 355, nil, 26,
- nil, 30, 1, nil, 8, 12, nil, 19, nil, 24,
- nil, 28, nil, 2, nil, nil, 11, 16, 26, 359,
- 30, 1, nil, 8, 12, nil, 19, nil, 24, nil,
- 28, nil, 2, nil, nil, 11, 16, nil, 361, nil,
- 26, nil, 30, 1, nil, 8, 12, nil, 19, nil,
- 24, nil, 28, nil, 2, nil, nil, 11, 16, 26,
- 286, 30, 1, nil, 8, 12, nil, 19, nil, 24,
- nil, 28, nil, 2, nil, nil, 11, 16, nil, 362,
+ 77, nil, nil, 83, nil, nil, 60, 65, nil, 59,
+ 95, 52, 97, 72, 75, nil, nil, 80, nil, nil,
+ nil, nil, 68, 93, nil, nil, 77, nil, 88, 83,
+ nil, nil, 60, 65, nil, nil, 95, 52, 97, 59,
+ nil, nil, nil, 72, 75, nil, nil, 80, nil, nil,
+ 60, 65, 68, 93, 88, nil, 77, nil, nil, 83,
+ nil, nil, nil, nil, nil, 59, nil, 52, nil, 72,
+ 75, nil, nil, 80, nil, nil, nil, nil, 68, 93,
+ 60, 65, 77, 186, 95, 83, 97, 72, 237, 172,
+ nil, 80, nil, 52, nil, nil, 131, nil, 165, 170,
+ 77, nil, 88, nil, nil, nil, nil, 161, 163, 166,
+ 169, 52, nil, 59, nil, nil, nil, 72, 75, 60,
+ 65, 80, nil, 95, 175, 97, 68, 93, nil, nil,
+ 77, 164, 168, 83, nil, 173, 157, 158, 159, 160,
+ 162, 52, 167, 171, 60, 65, nil, nil, 95, nil,
+ 97, nil, 59, nil, nil, nil, 72, 75, nil, nil,
+ 80, nil, nil, nil, nil, 68, 88, nil, nil, 77,
+ 60, 65, nil, nil, 95, nil, 97, 59, nil, nil,
+ 52, 72, 75, nil, nil, 80, nil, nil, nil, nil,
+ 68, 93, 88, nil, 77, nil, nil, 83, nil, nil,
+ nil, nil, nil, 59, nil, 52, nil, 72, 75, nil,
+ nil, 80, 227, 228, nil, nil, 68, 93, nil, nil,
+ 77, nil, nil, 83, nil, 165, 170, nil, nil, nil,
+ nil, 52, nil, nil, 161, 163, 166, 169, 165, 170,
+ nil, nil, nil, nil, nil, nil, 246, 161, 163, 166,
+ 169, nil, nil, nil, nil, nil, nil, nil, 164, 168,
+ nil, nil, 173, 157, 158, 159, 160, 162, nil, 167,
+ 171, 164, 168, nil, nil, 173, 157, 158, 159, 160,
+ 162, nil, 167, 171, 165, 170, nil, nil, nil, nil,
+ nil, nil, nil, 161, 163, 166, 169, 165, 170, nil,
+ nil, nil, nil, nil, nil, nil, 161, 163, 166, 169,
+ nil, nil, nil, nil, nil, nil, nil, 164, 168, nil,
+ nil, 173, 157, 158, 159, 160, 162, nil, 167, 171,
+ 164, 168, nil, nil, 173, 157, 158, 159, 160, 162,
+ nil, 167, 171, 165, 170, nil, nil, nil, nil, nil,
+ nil, nil, 161, 163, 166, 169, 165, 170, nil, nil,
+ nil, nil, nil, nil, nil, 161, 163, 166, 169, nil,
+ nil, 173, 157, 158, 159, 160, 162, 168, 167, 171,
+ 173, 157, 158, 159, 160, 162, nil, 167, 171, nil,
+ nil, nil, nil, 173, 157, 158, 159, 160, 162, nil,
+ 167, 171, 165, 170, nil, nil, nil, nil, nil, nil,
+ nil, 161, 163, 166, 169, 170, nil, nil, nil, nil,
+ nil, nil, nil, 161, 170, nil, nil, nil, nil, nil,
+ nil, nil, 161, nil, nil, 164, 168, nil, nil, 173,
+ 157, 158, 159, 160, 162, nil, 167, 171, 263, nil,
+ nil, 173, 157, 158, 159, 160, 162, nil, 167, 171,
+ 173, 157, 158, 159, 160, 162, nil, 167, 171, 26,
+ 342, 30, 1, nil, 8, 12, nil, 19, nil, 24,
+ nil, 28, nil, 2, nil, nil, 11, 16, nil, 316,
nil, 26, nil, 30, 1, nil, 8, 12, nil, 19,
nil, 24, nil, 28, nil, 2, nil, nil, 11, 16,
- 26, 363, 30, 1, nil, 8, 12, nil, 19, nil,
+ 26, 344, 30, 1, nil, 8, 12, nil, 19, nil,
24, nil, 28, nil, 2, nil, nil, 11, 16, nil,
- nil, nil, 26, nil, 30, 1, nil, 8, 12, nil,
+ 345, nil, 26, nil, 30, 1, nil, 8, 12, nil,
19, nil, 24, nil, 28, nil, 2, nil, nil, 11,
- 16, 26, nil, 30, 1, nil, 8, 12, nil, 19,
+ 16, 26, 298, 30, 1, nil, 8, 12, nil, 19,
nil, 24, nil, 28, nil, 2, nil, nil, 11, 16,
- 26, nil, 30, 1, nil, 8, 12, nil, 19, nil,
- 24, nil, 28, nil, 2, nil, nil, 11, 16 ]
+ nil, 356, nil, 26, nil, 30, 1, nil, 8, 12,
+ nil, 19, nil, 24, nil, 28, nil, 2, nil, nil,
+ 11, 16, 26, 360, 30, 1, nil, 8, 12, nil,
+ 19, nil, 24, nil, 28, nil, 2, nil, nil, 11,
+ 16, nil, 362, nil, 26, nil, 30, 1, nil, 8,
+ 12, nil, 19, nil, 24, nil, 28, nil, 2, nil,
+ nil, 11, 16, 26, 292, 30, 1, nil, 8, 12,
+ nil, 19, nil, 24, nil, 28, nil, 2, nil, nil,
+ 11, 16, nil, 363, nil, 26, nil, 30, 1, nil,
+ 8, 12, nil, 19, nil, 24, nil, 28, nil, 2,
+ nil, nil, 11, 16, 26, 364, 30, 1, nil, 8,
+ 12, nil, 19, nil, 24, nil, 28, nil, 2, nil,
+ nil, 11, 16, nil, nil, nil, 26, nil, 30, 1,
+ nil, 8, 12, nil, 19, nil, 24, nil, 28, nil,
+ 2, nil, nil, 11, 16, 26, nil, 30, 1, nil,
+ 8, 12, nil, 19, nil, 24, nil, 28, nil, 2,
+ nil, nil, 11, 16, 26, nil, 30, 1, nil, 8,
+ 12, nil, 19, nil, 24, nil, 28, nil, 2, nil,
+ nil, 11, 16 ]
racc_action_check = [
- 54, 54, 146, 146, 54, 48, 146, 143, 146, 105,
- 75, 44, 31, 276, 31, 19, 198, 86, 271, 121,
- 105, 149, 149, 244, 276, 105, 271, 31, 75, 276,
- 48, 120, 201, 54, 191, 146, 244, 54, 54, 146,
- 146, 54, 191, 146, 198, 198, 54, 255, 146, 143,
- 54, 31, 146, 19, 149, 255, 19, 121, 149, 149,
- 121, 54, 149, 146, 152, 152, 149, 149, 132, 120,
- 152, 149, 120, 274, 348, 348, 19, 248, 248, 202,
- 121, 132, 149, 255, 255, 255, 255, 255, 255, 203,
- 255, 255, 120, 153, 153, 324, 324, 152, 274, 274,
- 204, 152, 152, 247, 247, 152, 186, 348, 145, 8,
- 152, 348, 348, 204, 152, 348, 153, 186, 8, 8,
- 348, 145, 186, 196, 348, 152, 153, 208, 324, 258,
- 153, 153, 324, 324, 153, 348, 324, 258, 153, 153,
- 12, 324, 109, 153, 12, 324, 311, 311, 97, 97,
- 311, 12, 311, 109, 153, 97, 324, 113, 109, 194,
- 24, 24, 113, 85, 24, 258, 258, 258, 258, 258,
- 258, 151, 258, 258, 209, 151, 151, 176, 209, 311,
- 176, 209, 24, 311, 311, 209, 97, 311, 266, 266,
- 30, 30, 311, 24, 213, 266, 311, 24, 24, 195,
- 84, 24, 82, 195, 195, 24, 24, 311, 26, 26,
- 24, 5, 26, 1, 26, 5, 216, 1, 313, 313,
- 290, 24, 5, 5, 1, 290, 266, 28, 28, 217,
- 26, 28, 175, 28, 288, 288, 175, 175, 288, 218,
- 288, 26, 246, 246, 219, 26, 26, 246, 246, 26,
- 220, 263, 263, 81, 26, 26, 263, 263, 26, 79,
- 28, 26, 183, 183, 28, 28, 224, 288, 28, 26,
- 78, 288, 288, 28, 187, 288, 91, 28, 187, 187,
- 288, 156, 156, 235, 288, 156, 236, 156, 28, 250,
- 250, 250, 250, 250, 250, 288, 250, 250, 74, 178,
- 287, 287, 98, 156, 287, 170, 287, 157, 157, 99,
- 101, 157, 102, 157, 156, 166, 70, 68, 156, 156,
- 67, 63, 156, 59, 58, 280, 280, 156, 156, 157,
- 103, 156, 57, 287, 156, 262, 106, 287, 287, 264,
- 157, 287, 156, 108, 157, 157, 287, 55, 157, 110,
- 287, 112, 116, 157, 157, 117, 197, 157, 280, 40,
- 157, 287, 280, 280, 281, 283, 280, 35, 157, 33,
- 122, 280, 41, 41, 127, 280, 41, 23, 41, 20,
- 251, 251, 251, 251, 303, 13, 280, 251, 251, 131,
- 315, 43, 43, 317, 41, 43, 133, 43, 42, 42,
- 325, 328, 42, 330, 42, 41, 331, 333, 334, 41,
- 41, 336, 134, 41, 347, 135, 279, 279, 41, 41,
- 42, 349, 41, 139, 43, 41, 2, 138, 43, 43,
- 137, 42, 43, 41, nil, 42, 42, 43, nil, 42,
- nil, 43, nil, nil, 42, 42, nil, nil, 42, 279,
- nil, 42, 43, 279, 279, nil, nil, 279, nil, 42,
- nil, nil, 279, 45, 45, nil, 279, 45, nil, 45,
- nil, 259, 259, 259, 259, 259, 259, 279, 259, 259,
- nil, 269, 269, nil, nil, 45, nil, nil, 269, nil,
- 249, 249, 249, 249, nil, nil, 45, 249, 249, nil,
- 45, 45, nil, nil, 45, nil, nil, nil, nil, 45,
- 45, 158, 158, 45, 269, 158, 45, 158, 269, 269,
- nil, nil, 269, nil, 45, nil, nil, 269, nil, nil,
- nil, 269, nil, 158, nil, nil, nil, 268, 268, nil,
- nil, 268, 269, 268, 158, nil, nil, nil, 158, 158,
- nil, nil, 158, nil, nil, nil, nil, 158, 158, 159,
- 159, 158, nil, 159, 158, 159, nil, nil, nil, nil,
- 268, nil, 158, nil, 268, 268, nil, nil, 268, nil,
- nil, 159, nil, 268, nil, 160, 160, 268, nil, 160,
- nil, 160, 159, nil, nil, nil, 159, 159, 268, nil,
- 159, nil, nil, nil, nil, 159, 159, 160, nil, 159,
- nil, nil, 159, nil, nil, 161, 161, nil, 160, 161,
- 159, 161, 160, 160, nil, nil, 160, nil, nil, nil,
- nil, 160, 160, nil, nil, 160, nil, 161, 160, nil,
- 62, 62, nil, nil, nil, nil, 160, nil, 161, nil,
- nil, nil, 161, 161, nil, nil, 161, nil, nil, nil,
- nil, 161, 161, 62, nil, 161, 162, 162, 161, nil,
- 162, nil, 162, 62, nil, nil, 161, 62, 62, nil,
- nil, 62, nil, nil, nil, 62, 62, nil, 162, nil,
- 62, nil, 65, 65, nil, nil, 65, nil, 65, 162,
- nil, 62, nil, 162, 162, nil, nil, 162, nil, nil,
- nil, nil, 162, 162, 65, nil, 162, 107, 107, 162,
- nil, 107, nil, 107, nil, 65, nil, 162, nil, 65,
- 65, nil, nil, 65, nil, nil, nil, nil, 65, 65,
- nil, nil, 65, 163, 163, 65, nil, 163, nil, 163,
- 107, nil, nil, 65, 107, 107, nil, nil, 107, nil,
- nil, nil, nil, 107, nil, 163, nil, 107, nil, 169,
- 169, nil, nil, 169, nil, 169, 163, nil, 107, nil,
- 163, 163, nil, nil, 163, nil, nil, 238, 238, 163,
- 163, 169, nil, 163, 71, 71, 163, nil, 71, nil,
- 71, nil, 169, nil, 163, nil, 169, 169, 233, 233,
- 169, nil, 233, nil, 233, 169, 169, nil, nil, 169,
- 238, nil, 169, nil, 238, 238, nil, 71, 238, nil,
- 169, 71, 71, 238, nil, 71, nil, 238, 222, 222,
- 71, 233, nil, nil, 71, 233, 233, nil, 238, 233,
- nil, nil, nil, nil, 233, 71, 226, 226, 233, nil,
- 226, 222, 226, nil, nil, nil, nil, nil, nil, 233,
- nil, 222, nil, nil, nil, 222, 222, nil, 226, 222,
- nil, 221, 221, 222, 222, 221, nil, 221, 222, 226,
- nil, nil, nil, 226, 226, nil, nil, 226, nil, 222,
- nil, nil, 226, 226, nil, nil, 226, 215, 215, 226,
- nil, 215, nil, 215, 221, nil, nil, 226, 221, 221,
- nil, nil, 221, nil, nil, nil, nil, 221, 83, 83,
- nil, 221, 83, nil, 83, nil, nil, nil, nil, nil,
- 215, nil, 221, nil, 215, 215, nil, nil, 215, nil,
- 83, nil, nil, 215, 214, 214, nil, 215, 214, nil,
- nil, 83, nil, nil, nil, 83, 83, nil, 215, 83,
- nil, nil, nil, nil, 83, 83, 165, 165, 83, nil,
- 165, 83, 165, nil, nil, nil, nil, 214, nil, 83,
- nil, 214, 214, nil, nil, 214, nil, nil, 165, nil,
- 214, nil, 167, 167, 214, nil, 167, nil, 167, 165,
- nil, nil, nil, 165, 165, 214, nil, 165, nil, nil,
- nil, nil, 165, 165, 167, nil, 165, nil, nil, 165,
- nil, nil, 88, 88, nil, 167, 88, 165, 88, 167,
- 167, nil, nil, 167, nil, nil, nil, nil, 167, 167,
- nil, nil, 167, nil, 88, 167, nil, nil, 168, 168,
- nil, nil, 168, 167, 168, 88, nil, nil, nil, 88,
- 88, nil, nil, 88, nil, nil, 182, 182, 88, 88,
- 168, nil, 88, nil, nil, 88, nil, nil, nil, nil,
- nil, 168, nil, 88, nil, 168, 168, nil, nil, 168,
- nil, nil, nil, nil, 168, 168, 93, 93, 168, 182,
- 93, 168, 93, 182, 182, 89, nil, 182, nil, 168,
- nil, nil, 182, nil, 89, 89, 182, nil, 93, nil,
- nil, nil, nil, 89, 89, 89, 89, 182, nil, 93,
- nil, nil, nil, 93, 93, 95, 95, 93, nil, 95,
- 95, 95, 93, 93, nil, nil, 93, 89, 89, 93,
- nil, 89, 89, 89, 89, 89, 89, 93, 89, 89,
- 172, 172, nil, nil, 172, nil, 172, nil, 95, nil,
- nil, nil, 95, 95, nil, nil, 95, nil, nil, nil,
- nil, 95, 172, nil, nil, 95, 164, 164, nil, nil,
- 164, nil, 164, 172, nil, nil, 95, 172, 172, nil,
- nil, 172, nil, nil, nil, nil, 172, 172, 164, nil,
- 172, nil, nil, 172, nil, nil, nil, nil, nil, 164,
- nil, 172, nil, 164, 164, nil, nil, 164, 148, 148,
- nil, nil, 164, 164, nil, nil, 164, nil, nil, 164,
- nil, 148, 148, nil, nil, nil, nil, 164, nil, nil,
- 148, 148, 148, 148, 155, 155, nil, nil, nil, nil,
- nil, nil, 155, 155, 155, 155, 155, nil, nil, nil,
- nil, nil, nil, nil, 148, 148, nil, nil, 148, 148,
- 148, 148, 148, 148, nil, 148, 148, 155, 155, nil,
- nil, 155, 155, 155, 155, 155, 155, nil, 155, 155,
- 114, 114, nil, nil, nil, nil, nil, nil, nil, 114,
- 114, 114, 114, 118, 118, nil, nil, nil, nil, nil,
- nil, nil, 118, 118, 118, 118, nil, nil, nil, nil,
- nil, nil, nil, 114, 114, nil, nil, 114, 114, 114,
- 114, 114, 114, nil, 114, 114, 118, 118, nil, nil,
- 118, 118, 118, 118, 118, 118, nil, 118, 118, 253,
- 253, nil, nil, nil, nil, nil, nil, nil, 253, 253,
- 253, 253, 257, 257, nil, nil, nil, nil, nil, nil,
- nil, 257, 257, 257, 257, nil, nil, nil, nil, nil,
- nil, nil, nil, 253, nil, nil, 253, 253, 253, 253,
- 253, 253, nil, 253, 253, nil, nil, nil, nil, 257,
- 257, 257, 257, 257, 257, nil, 257, 257, 115, 115,
- nil, nil, nil, nil, nil, nil, nil, 115, 115, 115,
- 115, 254, nil, nil, nil, nil, nil, nil, nil, 254,
- 252, nil, nil, nil, nil, nil, nil, nil, 252, nil,
- nil, 115, 115, nil, nil, 115, 115, 115, 115, 115,
- 115, nil, 115, 115, 171, nil, nil, 254, 254, 254,
- 254, 254, 254, nil, 254, 254, 252, 252, 252, 252,
- 252, 252, nil, 252, 252, 171, 285, 171, 171, nil,
- 171, 171, nil, 171, nil, 171, nil, 171, nil, 171,
- nil, nil, 171, 171, nil, 261, nil, 285, nil, 285,
- 285, nil, 285, 285, nil, 285, nil, 285, nil, 285,
- nil, 285, nil, nil, 285, 285, 261, 292, 261, 261,
- nil, 261, 261, nil, 261, nil, 261, nil, 261, nil,
- 261, nil, nil, 261, 261, nil, 296, nil, 292, nil,
- 292, 292, nil, 292, 292, nil, 292, nil, 292, nil,
- 292, nil, 292, nil, nil, 292, 292, 296, 212, 296,
- 296, nil, 296, 296, nil, 296, nil, 296, nil, 296,
- nil, 296, nil, nil, 296, 296, nil, 342, nil, 212,
- nil, 212, 212, nil, 212, 212, nil, 212, nil, 212,
- nil, 212, nil, 212, nil, nil, 212, 212, 342, 351,
- 342, 342, nil, 342, 342, nil, 342, nil, 342, nil,
- 342, nil, 342, nil, nil, 342, 342, nil, 353, nil,
- 351, nil, 351, 351, nil, 351, 351, nil, 351, nil,
- 351, nil, 351, nil, 351, nil, nil, 351, 351, 353,
- 200, 353, 353, nil, 353, 353, nil, 353, nil, 353,
- nil, 353, nil, 353, nil, nil, 353, 353, nil, 358,
- nil, 200, nil, 200, 200, nil, 200, 200, nil, 200,
- nil, 200, nil, 200, nil, 200, nil, nil, 200, 200,
- 358, 360, 358, 358, nil, 358, 358, nil, 358, nil,
- 358, nil, 358, nil, 358, nil, nil, 358, 358, nil,
- nil, nil, 360, nil, 360, 360, nil, 360, 360, nil,
- 360, nil, 360, nil, 360, nil, 360, nil, nil, 360,
- 360, 4, nil, 4, 4, nil, 4, 4, nil, 4,
- nil, 4, nil, 4, nil, 4, nil, nil, 4, 4,
- 0, nil, 0, 0, nil, 0, 0, nil, 0, nil,
- 0, nil, 0, nil, 0, nil, nil, 0, 0 ]
+ 54, 54, 147, 147, 54, 48, 147, 144, 147, 110,
+ 75, 44, 31, 106, 31, 19, 199, 198, 192, 122,
+ 110, 150, 150, 133, 106, 110, 192, 31, 75, 106,
+ 48, 121, 195, 54, 272, 147, 133, 54, 54, 147,
+ 147, 54, 272, 147, 199, 199, 54, 256, 147, 144,
+ 54, 31, 147, 19, 150, 256, 19, 122, 150, 150,
+ 122, 54, 150, 147, 153, 153, 150, 150, 245, 121,
+ 153, 150, 121, 275, 349, 349, 19, 249, 249, 201,
+ 122, 245, 150, 256, 256, 256, 256, 256, 256, 202,
+ 256, 256, 121, 154, 154, 325, 325, 153, 275, 275,
+ 146, 153, 153, 314, 314, 153, 187, 349, 204, 8,
+ 153, 349, 349, 146, 153, 349, 154, 187, 8, 8,
+ 349, 204, 187, 203, 349, 153, 154, 184, 325, 259,
+ 154, 154, 325, 325, 154, 349, 325, 259, 154, 154,
+ 12, 325, 277, 154, 12, 325, 312, 312, 97, 97,
+ 312, 12, 312, 277, 154, 97, 325, 113, 277, 86,
+ 24, 24, 113, 209, 24, 259, 259, 259, 259, 259,
+ 259, 196, 259, 259, 210, 196, 196, 177, 210, 312,
+ 177, 210, 24, 312, 312, 210, 97, 312, 267, 267,
+ 248, 248, 312, 24, 91, 267, 312, 24, 24, 152,
+ 85, 24, 214, 152, 152, 24, 24, 312, 26, 26,
+ 24, 5, 26, 1, 26, 5, 84, 1, 82, 217,
+ 289, 24, 5, 5, 1, 289, 267, 28, 28, 218,
+ 26, 28, 188, 28, 157, 157, 188, 188, 157, 219,
+ 157, 26, 247, 247, 220, 26, 26, 247, 247, 26,
+ 221, 81, 79, 225, 26, 26, 157, 78, 26, 180,
+ 28, 26, 236, 237, 28, 28, 74, 157, 28, 26,
+ 98, 157, 157, 28, 176, 157, 171, 28, 176, 176,
+ 157, 157, 99, 101, 157, 158, 158, 157, 28, 158,
+ 102, 158, 264, 264, 167, 157, 104, 264, 264, 70,
+ 68, 67, 63, 59, 287, 287, 58, 158, 287, 107,
+ 287, 286, 286, 57, 263, 286, 109, 286, 158, 265,
+ 111, 55, 158, 158, 114, 117, 158, 118, 123, 281,
+ 281, 158, 158, 197, 40, 158, 282, 287, 158, 284,
+ 35, 287, 287, 33, 286, 287, 158, 128, 286, 286,
+ 287, 30, 286, 23, 287, 20, 304, 286, 13, 132,
+ 316, 286, 281, 318, 134, 287, 281, 281, 326, 329,
+ 281, 331, 286, 332, 334, 281, 41, 41, 335, 281,
+ 41, 337, 41, 135, 252, 252, 252, 252, 348, 136,
+ 281, 252, 252, 350, 140, 43, 43, 2, 41, 43,
+ 139, 43, 42, 42, 138, nil, 42, nil, 42, 41,
+ nil, nil, nil, 41, 41, nil, nil, 41, nil, nil,
+ 280, 280, 41, 41, 42, nil, 41, nil, 43, 41,
+ nil, nil, 43, 43, nil, 42, 43, 41, nil, 42,
+ 42, 43, nil, 42, nil, 43, nil, nil, 42, 42,
+ nil, nil, 42, 280, nil, 42, 43, 280, 280, nil,
+ nil, 280, nil, 42, nil, nil, 280, 45, 45, nil,
+ 280, 45, nil, 45, nil, 251, 251, 251, 251, 251,
+ 251, 280, 251, 251, nil, 270, 270, nil, nil, 45,
+ nil, nil, 270, nil, 250, 250, 250, 250, nil, nil,
+ 45, 250, 250, nil, 45, 45, nil, nil, 45, nil,
+ nil, nil, nil, 45, 45, 159, 159, 45, 270, 159,
+ 45, 159, 270, 270, nil, nil, 270, nil, 45, nil,
+ nil, 270, nil, nil, nil, 270, nil, 159, nil, nil,
+ nil, 269, 269, nil, nil, 269, 270, 269, 159, nil,
+ nil, nil, 159, 159, nil, nil, 159, nil, nil, nil,
+ nil, 159, 159, 160, 160, 159, nil, 160, 159, 160,
+ nil, nil, nil, nil, 269, nil, 159, nil, 269, 269,
+ nil, nil, 269, nil, nil, 160, nil, 269, nil, 161,
+ 161, 269, nil, 161, nil, 161, 160, nil, nil, nil,
+ 160, 160, 269, nil, 160, nil, nil, nil, nil, 160,
+ 160, 161, nil, 160, nil, nil, 160, nil, nil, 162,
+ 162, nil, 161, 162, 160, 162, 161, 161, nil, nil,
+ 161, nil, nil, nil, nil, 161, 161, nil, nil, 161,
+ nil, 162, 161, nil, 62, 62, nil, nil, nil, nil,
+ 161, nil, 162, nil, nil, nil, 162, 162, nil, nil,
+ 162, nil, nil, nil, nil, 162, 162, 62, nil, 162,
+ 163, 163, 162, nil, 163, nil, 163, 62, nil, nil,
+ 162, 62, 62, nil, nil, 62, nil, nil, nil, 62,
+ 62, nil, 163, nil, 62, nil, 65, 65, nil, nil,
+ 65, nil, 65, 163, nil, 62, nil, 163, 163, nil,
+ nil, 163, nil, nil, nil, nil, 163, 163, 65, nil,
+ 163, 108, 108, 163, nil, 108, nil, 108, nil, 65,
+ nil, 163, nil, 65, 65, nil, nil, 65, nil, nil,
+ nil, nil, 65, 65, nil, nil, 65, 164, 164, 65,
+ nil, 164, nil, 164, 108, nil, nil, 65, 108, 108,
+ nil, nil, 108, nil, nil, nil, nil, 108, nil, 164,
+ nil, 108, nil, 170, 170, nil, nil, 170, nil, 170,
+ 164, nil, 108, nil, 164, 164, nil, nil, 164, nil,
+ nil, 239, 239, 164, 164, 170, nil, 164, 71, 71,
+ 164, nil, 71, nil, 71, nil, 170, nil, 164, nil,
+ 170, 170, 234, 234, 170, nil, 234, nil, 234, 170,
+ 170, nil, nil, 170, 239, nil, 170, nil, 239, 239,
+ nil, 71, 239, nil, 170, 71, 71, 239, nil, 71,
+ nil, 239, 223, 223, 71, 234, nil, nil, 71, 234,
+ 234, nil, 239, 234, nil, nil, nil, nil, 234, 71,
+ 227, 227, 234, nil, 227, 223, 227, nil, nil, nil,
+ nil, nil, nil, 234, nil, 223, nil, nil, nil, 223,
+ 223, nil, 227, 223, nil, 222, 222, 223, 223, 222,
+ nil, 222, 223, 227, nil, nil, nil, 227, 227, nil,
+ nil, 227, nil, 223, nil, nil, 227, 227, nil, nil,
+ 227, 216, 216, 227, nil, 216, nil, 216, 222, nil,
+ nil, 227, 222, 222, nil, nil, 222, nil, nil, nil,
+ nil, 222, 83, 83, nil, 222, 83, nil, 83, nil,
+ nil, nil, nil, nil, 216, nil, 222, nil, 216, 216,
+ nil, nil, 216, nil, 83, nil, nil, 216, 215, 215,
+ nil, 216, 215, nil, nil, 83, nil, nil, nil, 83,
+ 83, nil, 216, 83, nil, nil, nil, nil, 83, 83,
+ 166, 166, 83, nil, 166, 83, 166, nil, nil, nil,
+ nil, 215, nil, 83, nil, 215, 215, nil, nil, 215,
+ nil, nil, 166, nil, 215, nil, 168, 168, 215, nil,
+ 168, nil, 168, 166, nil, nil, nil, 166, 166, 215,
+ nil, 166, nil, nil, nil, nil, 166, 166, 168, nil,
+ 166, nil, nil, 166, nil, nil, 88, 88, nil, 168,
+ 88, 166, 88, 168, 168, nil, nil, 168, nil, nil,
+ nil, nil, 168, 168, nil, nil, 168, nil, 88, 168,
+ nil, nil, 169, 169, nil, nil, 169, 168, 169, 88,
+ nil, nil, nil, 88, 88, nil, nil, 88, nil, nil,
+ 183, 183, 88, 88, 169, nil, 88, nil, nil, 88,
+ nil, nil, nil, nil, nil, 169, nil, 88, nil, 169,
+ 169, nil, nil, 169, nil, nil, nil, nil, 169, 169,
+ 93, 93, 169, 183, 93, 169, 93, 183, 183, 89,
+ nil, 183, nil, 169, nil, nil, 183, nil, 89, 89,
+ 183, nil, 93, nil, nil, nil, nil, 89, 89, 89,
+ 89, 183, nil, 93, nil, nil, nil, 93, 93, 95,
+ 95, 93, nil, 95, 95, 95, 93, 93, nil, nil,
+ 93, 89, 89, 93, nil, 89, 89, 89, 89, 89,
+ 89, 93, 89, 89, 173, 173, nil, nil, 173, nil,
+ 173, nil, 95, nil, nil, nil, 95, 95, nil, nil,
+ 95, nil, nil, nil, nil, 95, 173, nil, nil, 95,
+ 165, 165, nil, nil, 165, nil, 165, 173, nil, nil,
+ 95, 173, 173, nil, nil, 173, nil, nil, nil, nil,
+ 173, 173, 165, nil, 173, nil, nil, 173, nil, nil,
+ nil, nil, nil, 165, nil, 173, nil, 165, 165, nil,
+ nil, 165, 149, 149, nil, nil, 165, 165, nil, nil,
+ 165, nil, nil, 165, nil, 149, 149, nil, nil, nil,
+ nil, 165, nil, nil, 149, 149, 149, 149, 156, 156,
+ nil, nil, nil, nil, nil, nil, 156, 156, 156, 156,
+ 156, nil, nil, nil, nil, nil, nil, nil, 149, 149,
+ nil, nil, 149, 149, 149, 149, 149, 149, nil, 149,
+ 149, 156, 156, nil, nil, 156, 156, 156, 156, 156,
+ 156, nil, 156, 156, 115, 115, nil, nil, nil, nil,
+ nil, nil, nil, 115, 115, 115, 115, 119, 119, nil,
+ nil, nil, nil, nil, nil, nil, 119, 119, 119, 119,
+ nil, nil, nil, nil, nil, nil, nil, 115, 115, nil,
+ nil, 115, 115, 115, 115, 115, 115, nil, 115, 115,
+ 119, 119, nil, nil, 119, 119, 119, 119, 119, 119,
+ nil, 119, 119, 254, 254, nil, nil, nil, nil, nil,
+ nil, nil, 254, 254, 254, 254, 258, 258, nil, nil,
+ nil, nil, nil, nil, nil, 258, 258, 258, 258, nil,
+ nil, 260, 260, 260, 260, 260, 260, 254, 260, 260,
+ 254, 254, 254, 254, 254, 254, nil, 254, 254, nil,
+ nil, nil, nil, 258, 258, 258, 258, 258, 258, nil,
+ 258, 258, 116, 116, nil, nil, nil, nil, nil, nil,
+ nil, 116, 116, 116, 116, 255, nil, nil, nil, nil,
+ nil, nil, nil, 255, 253, nil, nil, nil, nil, nil,
+ nil, nil, 253, nil, nil, 116, 116, nil, nil, 116,
+ 116, 116, 116, 116, 116, nil, 116, 116, 172, nil,
+ nil, 255, 255, 255, 255, 255, 255, nil, 255, 255,
+ 253, 253, 253, 253, 253, 253, nil, 253, 253, 172,
+ 291, 172, 172, nil, 172, 172, nil, 172, nil, 172,
+ nil, 172, nil, 172, nil, nil, 172, 172, nil, 262,
+ nil, 291, nil, 291, 291, nil, 291, 291, nil, 291,
+ nil, 291, nil, 291, nil, 291, nil, nil, 291, 291,
+ 262, 293, 262, 262, nil, 262, 262, nil, 262, nil,
+ 262, nil, 262, nil, 262, nil, nil, 262, 262, nil,
+ 297, nil, 293, nil, 293, 293, nil, 293, 293, nil,
+ 293, nil, 293, nil, 293, nil, 293, nil, nil, 293,
+ 293, 297, 213, 297, 297, nil, 297, 297, nil, 297,
+ nil, 297, nil, 297, nil, 297, nil, nil, 297, 297,
+ nil, 343, nil, 213, nil, 213, 213, nil, 213, 213,
+ nil, 213, nil, 213, nil, 213, nil, 213, nil, nil,
+ 213, 213, 343, 352, 343, 343, nil, 343, 343, nil,
+ 343, nil, 343, nil, 343, nil, 343, nil, nil, 343,
+ 343, nil, 354, nil, 352, nil, 352, 352, nil, 352,
+ 352, nil, 352, nil, 352, nil, 352, nil, 352, nil,
+ nil, 352, 352, 354, 206, 354, 354, nil, 354, 354,
+ nil, 354, nil, 354, nil, 354, nil, 354, nil, nil,
+ 354, 354, nil, 359, nil, 206, nil, 206, 206, nil,
+ 206, 206, nil, 206, nil, 206, nil, 206, nil, 206,
+ nil, nil, 206, 206, 359, 361, 359, 359, nil, 359,
+ 359, nil, 359, nil, 359, nil, 359, nil, 359, nil,
+ nil, 359, 359, nil, nil, nil, 361, nil, 361, 361,
+ nil, 361, 361, nil, 361, nil, 361, nil, 361, nil,
+ 361, nil, nil, 361, 361, 4, nil, 4, 4, nil,
+ 4, 4, nil, 4, nil, 4, nil, 4, nil, 4,
+ nil, nil, 4, 4, 0, nil, 0, 0, nil, 0,
+ 0, nil, 0, nil, 0, nil, 0, nil, 0, nil,
+ nil, 0, 0 ]
racc_action_pointer = [
- 1730, 177, 382, nil, 1711, 175, nil, nil, 103, nil,
- nil, nil, 104, 370, nil, nil, nil, nil, nil, 13,
- 371, nil, nil, 369, 158, nil, 206, nil, 225, nil,
- 188, 6, nil, 369, nil, 343, nil, nil, nil, nil,
- 351, 370, 396, 389, -13, 461, nil, nil, -7, nil,
- nil, nil, nil, nil, -2, 307, nil, 309, 301, 317,
- nil, nil, 638, 315, nil, 690, nil, 297, 311, nil,
- 304, 792, nil, nil, 275, 4, nil, nil, 247, 236,
- nil, 247, 179, 926, 177, 140, -6, nil, 1030, 1107,
- nil, 253, nil, 1104, nil, 1143, nil, 146, 279, 286,
- nil, 287, 304, 318, nil, -15, 328, 715, 303, 118,
- 349, nil, 343, 122, 1293, 1411, 345, 318, 1306, nil,
- 29, 17, 362, nil, nil, nil, nil, 351, nil, nil,
- nil, 348, 57, 373, 400, 392, nil, 407, 407, 411,
- nil, nil, nil, -4, nil, 96, 0, nil, 1234, 19,
- nil, 164, 62, 91, nil, 1247, 279, 305, 509, 557,
- 583, 613, 664, 741, 1194, 974, 252, 1000, 1056, 767,
- 242, 1465, 1168, nil, nil, 225, 168, nil, 288, nil,
- nil, nil, 1074, 260, nil, nil, 82, 228, nil, nil,
- nil, 16, nil, nil, 119, 192, 112, 344, -6, nil,
- 1651, 17, 64, 64, 88, nil, nil, nil, 119, 138,
- nil, nil, 1569, 185, 952, 905, 176, 220, 199, 204,
- 241, 879, 836, nil, 259, nil, 854, nil, nil, nil,
- nil, nil, nil, 806, nil, 272, 262, nil, 785, nil,
- nil, nil, nil, nil, 11, nil, 186, 42, 16, 436,
- 235, 326, 1432, 1352, 1423, 29, nil, 1365, 111, 417,
- nil, 1506, 304, 195, 332, nil, 186, nil, 535, 479,
- nil, 6, nil, nil, 48, nil, -11, nil, nil, 414,
- 323, 352, nil, 356, nil, 1487, nil, 298, 232, nil,
- 185, nil, 1528, nil, nil, nil, 1547, nil, nil, nil,
- nil, nil, nil, 372, nil, nil, nil, nil, nil, nil,
- nil, 144, nil, 207, nil, 359, nil, 385, nil, nil,
- nil, nil, nil, nil, 93, 392, nil, nil, 378, nil,
- 380, 383, nil, 384, 385, nil, 402, nil, nil, nil,
- nil, nil, 1588, nil, nil, nil, nil, 405, 72, 412,
- nil, 1610, nil, 1629, nil, nil, nil, nil, 1670, nil,
- 1692, nil, nil, nil ]
+ 1734, 177, 353, nil, 1715, 175, nil, nil, 103, nil,
+ nil, nil, 104, 343, nil, nil, nil, nil, nil, 13,
+ 347, nil, nil, 345, 158, nil, 206, nil, 225, nil,
+ 349, 6, nil, 343, nil, 316, nil, nil, nil, nil,
+ 326, 374, 400, 393, -13, 465, nil, nil, -7, nil,
+ nil, nil, nil, nil, -2, 281, nil, 290, 283, 297,
+ nil, nil, 642, 296, nil, 694, nil, 278, 294, nil,
+ 287, 796, nil, nil, 243, 4, nil, nil, 234, 229,
+ nil, 245, 195, 930, 193, 177, 136, nil, 1034, 1111,
+ nil, 171, nil, 1108, nil, 1147, nil, 146, 247, 259,
+ nil, 260, 282, nil, 284, nil, -11, 301, 719, 276,
+ -15, 320, nil, 122, 316, 1297, 1415, 318, 290, 1310,
+ nil, 29, 17, 320, nil, nil, nil, nil, 324, nil,
+ nil, nil, 318, 12, 341, 371, 366, nil, 381, 380,
+ 382, nil, nil, nil, -4, nil, 88, 0, nil, 1238,
+ 19, nil, 192, 62, 91, nil, 1251, 232, 283, 513,
+ 561, 587, 617, 668, 745, 1198, 978, 231, 1004, 1060,
+ 771, 213, 1469, 1172, nil, nil, 267, 168, nil, nil,
+ 248, nil, nil, 1078, 125, nil, nil, 82, 186, nil,
+ nil, nil, 0, nil, nil, -8, 164, 322, 5, -6,
+ nil, 64, 74, 98, 96, nil, 1655, nil, nil, 155,
+ 138, nil, nil, 1573, 193, 956, 909, 179, 220, 199,
+ 204, 241, 883, 840, nil, 246, nil, 858, nil, nil,
+ nil, nil, nil, nil, 810, nil, 251, 239, nil, 789,
+ nil, nil, nil, nil, nil, 56, nil, 186, 129, 16,
+ 440, 421, 330, 1436, 1356, 1427, 29, nil, 1369, 111,
+ 1347, nil, 1510, 283, 236, 312, nil, 186, nil, 539,
+ 483, nil, 22, nil, nil, 48, nil, 118, nil, nil,
+ 418, 327, 324, nil, 330, nil, 309, 302, nil, 185,
+ nil, 1491, nil, 1532, nil, nil, nil, 1551, nil, nil,
+ nil, nil, nil, nil, 344, nil, nil, nil, nil, nil,
+ nil, nil, 144, nil, 92, nil, 329, nil, 355, nil,
+ nil, nil, nil, nil, nil, 93, 360, nil, nil, 346,
+ nil, 348, 350, nil, 351, 355, nil, 372, nil, nil,
+ nil, nil, nil, 1592, nil, nil, nil, nil, 379, 72,
+ 384, nil, 1614, nil, 1633, nil, nil, nil, nil, 1674,
+ nil, 1696, nil, nil, nil ]
racc_action_default = [
- -182, -219, -40, -13, -1, -219, -14, -2, -219, -15,
- -3, -173, -174, -219, -16, -5, -171, -17, -6, -219,
- -219, -7, -8, -219, -172, -9, -219, -10, -219, -11,
- -219, -219, -12, -219, -174, -182, -172, -41, -4, -39,
- -219, -219, -219, -219, -182, -219, -179, -181, -182, -175,
- -177, -178, -207, -180, -75, -82, -159, -29, -30, -199,
- -107, -31, -219, -217, -161, -219, -34, -32, -64, -33,
- -21, -219, -112, -22, -219, -63, -23, -62, -26, -27,
- -160, -219, -28, -219, -104, -96, -103, -99, -219, -219,
- -97, -93, -101, -219, -120, -219, -102, -219, -94, -98,
- -100, -95, -219, -164, -162, -182, -43, -219, -75, -182,
- -219, -184, -219, -183, -72, -74, -219, -182, -73, -193,
- -219, -219, -219, -158, -157, -70, -68, -65, -76, -71,
- -64, -60, -63, -66, -205, -69, -58, -67, -219, -205,
- -80, -81, -83, -219, -20, -219, -219, -108, -219, -219,
- -85, -219, -219, -219, -129, -219, -219, -219, -219, -219,
- -219, -219, -219, -219, -219, -219, -219, -219, -219, -219,
- -219, -219, -219, -136, -202, -219, -219, -211, -219, -215,
- -214, -210, -219, -219, -46, -199, -182, -219, -47, -49,
- -63, -219, -56, -55, -82, -219, -219, -205, -219, 364,
- -219, -192, -190, -219, -219, -187, -216, -195, -219, -219,
- -176, -194, -219, -219, -61, -219, -206, -219, -75, -206,
- -219, -219, -219, -18, -219, -109, -219, -110, -24, -25,
- -203, -204, -113, -219, -155, -219, -63, -153, -219, -147,
- -156, -148, -154, -106, -219, -139, -124, -126, -125, -127,
- -131, -128, -133, -138, -135, -132, -121, -137, -134, -130,
- -122, -219, -117, -123, -204, -200, -219, -208, -219, -219,
- -141, -219, -145, -163, -219, -44, -219, -52, -51, -219,
- -219, -205, -114, -219, -45, -219, -166, -219, -219, -185,
- -219, -186, -219, -197, -198, -196, -219, -170, -35, -59,
- -78, -77, -36, -205, -84, -38, -79, -19, -218, -111,
- -86, -219, -150, -205, -105, -117, -116, -219, -201, -212,
- -209, -213, -142, -140, -219, -219, -50, -48, -90, -91,
- -87, -88, -53, -92, -89, -54, -219, -37, -165, -191,
- -189, -188, -219, -168, -169, -57, -152, -204, -219, -219,
- -115, -219, -146, -219, -42, -167, -151, -149, -219, -119,
- -219, -144, -118, -143 ]
+ -183, -220, -40, -13, -1, -220, -14, -2, -220, -15,
+ -3, -174, -175, -220, -16, -5, -172, -17, -6, -220,
+ -220, -7, -8, -220, -173, -9, -220, -10, -220, -11,
+ -220, -220, -12, -220, -175, -183, -173, -41, -4, -39,
+ -220, -220, -220, -220, -183, -220, -180, -182, -183, -176,
+ -179, -178, -208, -181, -75, -82, -159, -29, -30, -200,
+ -107, -31, -220, -218, -161, -220, -34, -32, -64, -33,
+ -21, -220, -112, -22, -220, -63, -23, -62, -26, -27,
+ -160, -220, -28, -220, -104, -96, -103, -99, -220, -220,
+ -97, -93, -101, -220, -120, -220, -102, -220, -94, -98,
+ -100, -95, -220, -163, -165, -162, -183, -43, -220, -75,
+ -183, -220, -185, -184, -220, -72, -74, -220, -183, -73,
+ -194, -220, -220, -220, -158, -157, -70, -68, -65, -76,
+ -71, -64, -60, -63, -66, -206, -69, -58, -67, -220,
+ -206, -80, -81, -83, -220, -20, -220, -220, -108, -220,
+ -220, -85, -220, -220, -220, -129, -220, -220, -220, -220,
+ -220, -220, -220, -220, -220, -220, -220, -220, -220, -220,
+ -220, -220, -220, -220, -136, -203, -220, -220, -212, -216,
+ -220, -215, -211, -220, -220, -46, -200, -183, -220, -47,
+ -49, -63, -220, -56, -55, -82, -220, -220, -206, -220,
+ 365, -193, -191, -220, -220, -188, -220, -217, -196, -220,
+ -220, -177, -195, -220, -220, -61, -220, -207, -220, -75,
+ -207, -220, -220, -220, -18, -220, -109, -220, -110, -24,
+ -25, -204, -205, -113, -220, -155, -220, -63, -153, -220,
+ -147, -156, -148, -154, -106, -220, -139, -124, -126, -125,
+ -127, -131, -128, -133, -138, -135, -132, -121, -137, -134,
+ -130, -122, -220, -117, -123, -205, -201, -220, -209, -220,
+ -220, -141, -220, -145, -164, -220, -44, -220, -52, -51,
+ -220, -220, -206, -114, -220, -45, -220, -220, -186, -220,
+ -187, -220, -167, -220, -197, -198, -199, -220, -171, -35,
+ -59, -78, -77, -36, -206, -84, -38, -79, -19, -219,
+ -111, -86, -220, -150, -206, -105, -117, -116, -220, -202,
+ -213, -210, -214, -142, -140, -220, -220, -50, -48, -90,
+ -91, -87, -88, -53, -92, -89, -54, -220, -37, -192,
+ -190, -189, -166, -220, -169, -170, -57, -152, -205, -220,
+ -220, -115, -220, -146, -220, -42, -168, -151, -149, -220,
+ -119, -220, -144, -118, -143 ]
racc_goto_table = [
- 31, 61, 35, 13, 31, 40, 23, 13, 235, 241,
- 23, 205, 134, 44, 4, 217, 47, 177, 69, 139,
- 220, 70, 147, 67, 38, 270, 140, 7, 49, 104,
- 76, 126, 187, 136, 228, 125, 198, 316, 272, 61,
- 151, 112, 332, 335, 106, 348, 269, 304, 129, 225,
- 117, 239, 39, 127, 313, 103, 69, 131, 208, 145,
- 48, 67, 111, 122, 175, 327, 197, 211, 76, 203,
- 204, 111, 213, 58, 295, 119, 195, 176, 283, 33,
+ 31, 69, 205, 13, 31, 40, 178, 13, 35, 242,
+ 218, 148, 67, 23, 38, 221, 4, 23, 236, 44,
+ 126, 61, 135, 137, 58, 140, 103, 49, 70, 141,
+ 7, 130, 271, 229, 47, 317, 188, 76, 114, 69,
+ 199, 270, 128, 152, 333, 336, 226, 118, 273, 349,
+ 67, 127, 305, 240, 125, 39, 314, 132, 104, 61,
+ 214, 209, 58, 48, 123, 112, 146, 176, 328, 212,
+ 203, 204, 56, 284, 112, 76, 107, 198, 120, 294,
+ 196, 177, 33, nil, nil, 179, nil, nil, 351, nil,
+ nil, nil, nil, nil, nil, 313, nil, nil, nil, nil,
+ nil, nil, 56, nil, 236, nil, 229, nil, nil, nil,
+ 56, nil, nil, nil, nil, nil, nil, 275, nil, 323,
+ nil, nil, nil, nil, nil, nil, nil, 69, nil, 211,
+ nil, 69, nil, nil, nil, 273, 47, 47, 67, nil,
+ nil, 235, 67, nil, nil, nil, nil, 61, 208, nil,
+ 58, 61, nil, 125, 58, nil, nil, 337, 245, nil,
+ nil, nil, nil, 230, nil, 282, nil, 76, nil, 141,
+ nil, 235, 31, 310, nil, 13, 320, nil, 341, 346,
+ 274, 126, 257, 125, 300, 23, 261, 304, 262, 350,
+ 353, 302, 130, nil, 141, nil, nil, nil, 56, nil,
+ 69, 56, 56, 128, nil, 357, 31, nil, nil, 13,
+ nil, 67, 127, 31, 236, 125, 13, 295, nil, 23,
+ 61, nil, 291, 58, nil, nil, 23, 235, nil, 297,
+ nil, 56, nil, nil, nil, nil, 230, nil, nil, 125,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 78, nil, 79, 179, nil, nil, 235, nil,
+ nil, nil, 31, 56, nil, 13, nil, nil, 331, 331,
+ 125, 56, 38, 57, nil, 23, nil, 330, 330, nil,
+ 125, 125, 134, nil, 136, nil, nil, 56, nil, nil,
+ 78, 31, 79, 31, 13, nil, 13, 31, nil, nil,
+ 13, 38, nil, 124, 23, nil, 23, 38, 102, 343,
+ 23, 57, nil, 235, nil, nil, nil, nil, 56, nil,
+ nil, nil, nil, 117, nil, 125, nil, nil, 56, 56,
+ nil, nil, nil, nil, 193, nil, 194, 235, 193, nil,
+ 194, nil, nil, 31, nil, nil, 13, 82, nil, 125,
+ nil, 151, 31, 38, 31, 13, 23, 13, nil, 31,
+ nil, 31, 13, nil, 13, 23, nil, 23, 359, 38,
+ 361, 38, 23, 56, 23, 151, nil, 138, 78, nil,
+ 79, 238, 78, 241, 79, 82, nil, nil, 151, nil,
+ nil, nil, nil, nil, nil, nil, nil, 56, nil, 57,
+ nil, nil, 124, 57, nil, nil, nil, nil, nil, nil,
+ nil, 238, nil, 241, nil, 193, nil, 194, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, 225, nil, nil,
+ nil, nil, 124, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, 134, nil, 136, nil, nil, nil, nil,
+ nil, 78, nil, 79, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 124, nil, nil, 238, nil, 241,
+ nil, nil, 57, 82, 89, nil, 243, 82, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, 124, 115,
+ 116, nil, nil, 119, nil, nil, 301, nil, 238, nil,
+ 241, nil, 307, nil, nil, 193, 243, 194, 332, 332,
+ 334, 334, nil, nil, 311, nil, nil, nil, nil, 124,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 329,
+ 329, 155, nil, nil, nil, nil, 156, nil, 138, nil,
+ nil, 174, nil, nil, nil, nil, 82, nil, nil, 322,
+ nil, nil, nil, 238, nil, 241, nil, nil, nil, nil,
+ nil, nil, 243, nil, nil, nil, 339, 340, nil, nil,
+ nil, nil, nil, nil, 124, nil, nil, 238, nil, 241,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 347, 243, nil, nil, nil, nil, 124, nil,
+ nil, nil, nil, 335, 335, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, nil, 258, 259, 260, nil,
+ nil, 264, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 350, nil, nil, nil, 235, 312, 179, nil, nil, nil,
- nil, nil, nil, 124, nil, nil, nil, 228, nil, nil,
- nil, 58, 322, 274, nil, nil, nil, 47, 47, nil,
- nil, nil, nil, nil, nil, 272, 61, nil, nil, 210,
- 61, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 69, 207, nil, nil, 69, 67, nil,
- 244, 234, 67, nil, nil, 229, nil, nil, 281, 76,
- nil, nil, 336, 256, nil, 140, nil, 260, nil, nil,
- nil, 31, nil, nil, 13, nil, 303, 23, nil, 56,
- 352, 234, 273, 309, 345, 261, 319, 301, 341, nil,
- 140, 126, 57, 299, 349, 125, nil, nil, 58, 61,
- 31, 124, 58, 13, 235, 356, 23, nil, 129, 56,
- 293, nil, 31, 127, 285, 13, 69, 56, 23, nil,
- nil, 67, 123, nil, nil, nil, 296, nil, 229, nil,
- 57, 124, nil, nil, nil, nil, nil, 234, nil, nil,
- nil, nil, nil, nil, nil, nil, 78, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 329, 329, nil, 79,
- nil, 31, nil, 124, 13, 179, nil, 23, 234, nil,
- nil, 58, nil, 82, nil, nil, 133, nil, 330, 330,
- nil, 38, nil, nil, 78, 31, nil, 124, 13, 135,
- nil, 23, 31, nil, nil, 13, 31, 79, 23, 13,
- nil, nil, 23, 137, 56, 38, 342, 56, 56, nil,
- nil, 82, nil, nil, nil, nil, 38, 57, 124, nil,
- 123, 57, nil, 234, nil, nil, nil, 192, 124, 124,
- nil, 192, nil, nil, nil, nil, nil, 56, nil, nil,
- 193, nil, 31, nil, 193, 13, nil, 234, 23, nil,
- 123, 31, nil, 31, 13, nil, 13, 23, 31, 23,
- 31, 13, 38, 13, 23, 358, 23, 360, nil, 56,
- nil, 78, nil, 124, 237, 78, 102, 56, 38, nil,
- 38, nil, 123, nil, 79, nil, nil, 240, 79, nil,
- 57, 116, nil, 56, nil, nil, nil, 124, 82, nil,
- nil, 242, 82, nil, 237, nil, 123, nil, 192, nil,
- nil, nil, nil, nil, nil, nil, nil, 240, nil, 150,
- nil, 193, nil, nil, 56, nil, nil, nil, nil, nil,
- nil, 242, nil, nil, 56, 56, 133, 123, nil, nil,
- nil, nil, nil, 150, 78, nil, nil, 328, 328, 135,
- nil, nil, nil, nil, nil, 150, nil, 79, nil, nil,
- 237, nil, nil, 137, nil, nil, nil, nil, nil, 89,
- nil, 82, nil, 240, nil, nil, nil, nil, nil, 56,
- nil, nil, nil, nil, 114, 115, nil, 242, 118, nil,
- nil, 237, 123, nil, 224, nil, nil, nil, 192, nil,
- nil, 331, 331, 56, 240, nil, nil, nil, nil, nil,
- nil, 193, nil, nil, 333, 333, 123, nil, 242, nil,
- nil, nil, nil, nil, nil, nil, 154, nil, 334, 334,
- nil, 155, nil, nil, nil, nil, 173, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 237, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 240,
- nil, nil, nil, 300, nil, nil, nil, nil, nil, 306,
- 237, nil, nil, 242, nil, nil, nil, nil, nil, nil,
- nil, 310, nil, 240, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 242, nil, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, nil,
- 257, 258, 259, nil, nil, 263, 321, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, 243, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, 339, 340, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 346 ]
+ nil, nil, 243 ]
racc_goto_check = [
- 34, 26, 29, 49, 34, 34, 20, 49, 64, 66,
- 20, 77, 32, 29, 2, 33, 60, 80, 28, 35,
- 33, 18, 57, 27, 4, 62, 50, 3, 73, 27,
- 20, 26, 38, 44, 19, 47, 38, 59, 64, 26,
- 54, 69, 43, 43, 37, 55, 61, 53, 28, 58,
- 69, 65, 5, 27, 67, 68, 28, 30, 70, 18,
- 71, 27, 3, 72, 54, 39, 32, 74, 20, 75,
- 76, 3, 31, 25, 78, 3, 54, 79, 33, 1,
+ 34, 28, 78, 49, 34, 34, 81, 49, 29, 66,
+ 33, 57, 27, 20, 4, 33, 2, 20, 64, 29,
+ 47, 26, 32, 44, 25, 35, 68, 74, 18, 50,
+ 3, 28, 62, 19, 60, 59, 38, 20, 70, 28,
+ 38, 61, 27, 54, 43, 43, 58, 70, 64, 55,
+ 27, 26, 53, 65, 25, 5, 67, 30, 69, 26,
+ 31, 71, 25, 72, 73, 3, 18, 54, 39, 75,
+ 76, 77, 46, 33, 3, 20, 37, 32, 3, 79,
+ 54, 80, 1, nil, nil, 27, nil, nil, 59, nil,
+ nil, nil, nil, nil, nil, 66, nil, nil, nil, nil,
+ nil, nil, 46, nil, 64, nil, 19, nil, nil, nil,
+ 46, nil, nil, nil, nil, nil, nil, 38, nil, 62,
+ nil, nil, nil, nil, nil, nil, nil, 28, nil, 74,
+ nil, 28, nil, nil, nil, 64, 60, 60, 27, nil,
+ nil, 27, 27, nil, nil, nil, nil, 26, 3, nil,
+ 25, 26, nil, 25, 25, nil, nil, 33, 18, nil,
+ nil, nil, nil, 20, nil, 35, nil, 20, nil, 50,
+ nil, 27, 34, 57, nil, 49, 81, nil, 78, 33,
+ 68, 47, 60, 25, 44, 20, 60, 32, 2, 33,
+ 64, 50, 28, nil, 50, nil, nil, nil, 46, nil,
+ 28, 46, 46, 27, nil, 66, 34, nil, nil, 49,
+ nil, 27, 26, 34, 64, 25, 49, 29, nil, 20,
+ 26, nil, 2, 25, nil, nil, 20, 27, nil, 2,
+ nil, 46, nil, nil, nil, nil, 20, nil, nil, 25,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- 59, nil, nil, nil, 64, 66, 27, nil, nil, nil,
- nil, nil, nil, 25, nil, nil, nil, 19, nil, nil,
- nil, 25, 62, 38, nil, nil, nil, 60, 60, nil,
- nil, nil, nil, nil, nil, 64, 26, nil, nil, 73,
- 26, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, 28, 3, nil, nil, 28, 27, nil,
- 18, 27, 27, nil, nil, 20, nil, nil, 35, 20,
- nil, nil, 33, 60, nil, 50, nil, 60, nil, nil,
- nil, 34, nil, nil, 49, nil, 32, 20, nil, 46,
- 64, 27, 27, 57, 33, 2, 80, 50, 77, nil,
- 50, 26, 24, 44, 33, 47, nil, nil, 25, 26,
- 34, 25, 25, 49, 64, 66, 20, nil, 28, 46,
- 29, nil, 34, 27, 2, 49, 28, 46, 20, nil,
- nil, 27, 24, nil, nil, nil, 2, nil, 20, nil,
- 24, 25, nil, nil, nil, nil, nil, 27, nil, nil,
- nil, nil, nil, nil, nil, nil, 21, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 26, 26, nil, 22,
- nil, 34, nil, 25, 49, 27, nil, 20, 27, nil,
- nil, 25, nil, 23, nil, nil, 21, nil, 27, 27,
- nil, 4, nil, nil, 21, 34, nil, 25, 49, 22,
- nil, 20, 34, nil, nil, 49, 34, 22, 20, 49,
- nil, nil, 20, 23, 46, 4, 2, 46, 46, nil,
- nil, 23, nil, nil, nil, nil, 4, 24, 25, nil,
- 24, 24, nil, 27, nil, nil, nil, 21, 25, 25,
- nil, 21, nil, nil, nil, nil, nil, 46, nil, nil,
- 22, nil, 34, nil, 22, 49, nil, 27, 20, nil,
- 24, 34, nil, 34, 49, nil, 49, 20, 34, 20,
- 34, 49, 4, 49, 20, 2, 20, 2, nil, 46,
- nil, 21, nil, 25, 21, 21, 51, 46, 4, nil,
- 4, nil, 24, nil, 22, nil, nil, 22, 22, nil,
- 24, 51, nil, 46, nil, nil, nil, 25, 23, nil,
- nil, 23, 23, nil, 21, nil, 24, nil, 21, nil,
- nil, nil, nil, nil, nil, nil, nil, 22, nil, 51,
- nil, 22, nil, nil, 46, nil, nil, nil, nil, nil,
- nil, 23, nil, nil, 46, 46, 21, 24, nil, nil,
- nil, nil, nil, 51, 21, nil, nil, 24, 24, 22,
- nil, nil, nil, nil, nil, 51, nil, 22, nil, nil,
- 21, nil, nil, 23, nil, nil, nil, nil, nil, 48,
- nil, 23, nil, 22, nil, nil, nil, nil, nil, 46,
- nil, nil, nil, nil, 48, 48, nil, 23, 48, nil,
- nil, 21, 24, nil, 51, nil, nil, nil, 21, nil,
- nil, 21, 21, 46, 22, nil, nil, nil, nil, nil,
- nil, 22, nil, nil, 22, 22, 24, nil, 23, nil,
- nil, nil, nil, nil, nil, nil, 48, nil, 23, 23,
- nil, 48, nil, nil, nil, nil, 48, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, 21, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 22,
- nil, nil, nil, 51, nil, nil, nil, nil, nil, 51,
- 21, nil, nil, 23, nil, nil, nil, nil, nil, nil,
- nil, 51, nil, 22, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, 23, nil, 48,
- 48, 48, 48, 48, 48, 48, 48, 48, 48, nil,
- 48, 48, 48, nil, nil, 48, 51, nil, nil, nil,
+ nil, nil, 21, nil, 22, 27, nil, nil, 27, nil,
+ nil, nil, 34, 46, nil, 49, nil, nil, 27, 27,
+ 25, 46, 4, 24, nil, 20, nil, 26, 26, nil,
+ 25, 25, 21, nil, 22, nil, nil, 46, nil, nil,
+ 21, 34, 22, 34, 49, nil, 49, 34, nil, nil,
+ 49, 4, nil, 24, 20, nil, 20, 4, 51, 2,
+ 20, 24, nil, 27, nil, nil, nil, nil, 46, nil,
+ nil, nil, nil, 51, nil, 25, nil, nil, 46, 46,
+ nil, nil, nil, nil, 21, nil, 22, 27, 21, nil,
+ 22, nil, nil, 34, nil, nil, 49, 23, nil, 25,
+ nil, 51, 34, 4, 34, 49, 20, 49, nil, 34,
+ nil, 34, 49, nil, 49, 20, nil, 20, 2, 4,
+ 2, 4, 20, 46, 20, 51, nil, 23, 21, nil,
+ 22, 21, 21, 22, 22, 23, nil, nil, 51, nil,
+ nil, nil, nil, nil, nil, nil, nil, 46, nil, 24,
+ nil, nil, 24, 24, nil, nil, nil, nil, nil, nil,
+ nil, 21, nil, 22, nil, 21, nil, 22, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, 51, nil, nil,
+ nil, nil, 24, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, 21, nil, 22, nil, nil, nil, nil,
+ nil, 21, nil, 22, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, 24, nil, nil, 21, nil, 22,
+ nil, nil, 24, 23, 48, nil, 23, 23, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, 24, 48,
+ 48, nil, nil, 48, nil, nil, 51, nil, 21, nil,
+ 22, nil, 51, nil, nil, 21, 23, 22, 21, 21,
+ 22, 22, nil, nil, 51, nil, nil, nil, nil, 24,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 24,
+ 24, 48, nil, nil, nil, nil, 48, nil, 23, nil,
+ nil, 48, nil, nil, nil, nil, 23, nil, nil, 51,
+ nil, nil, nil, 21, nil, 22, nil, nil, nil, nil,
+ nil, nil, 23, nil, nil, nil, 51, 51, nil, nil,
+ nil, nil, nil, nil, 24, nil, nil, 21, nil, 22,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, 51, 51, nil, nil, nil,
+ nil, nil, 51, 23, nil, nil, nil, nil, 24, nil,
+ nil, nil, nil, 23, 23, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, nil, 48, 48, 48, nil,
+ nil, 48, nil, nil, nil, nil, nil, nil, nil, nil,
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, nil, 51 ]
+ nil, nil, nil, nil, nil, nil, nil, nil, 23, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, 23 ]
racc_goto_pointer = [
- nil, 79, 14, 27, 20, 47, nil, nil, nil, nil,
- nil, nil, nil, nil, nil, nil, nil, nil, -3, -115,
- 6, 222, 235, 249, 168, 49, -23, -1, -6, 1,
- 3, -59, -42, -119, 0, -36, nil, 13, -73, -211,
- nil, nil, nil, -237, -21, nil, 155, -19, 443, 3,
- -29, 348, nil, -172, -31, -268, nil, -43, -99, -225,
- -3, -136, -157, nil, -144, -101, -143, -184, 25, 6,
- -59, 41, 15, 9, -54, -44, -43, -102, -135, -20,
- -80, nil ]
+ nil, 82, 16, 30, 10, 50, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, 4, -117,
+ 13, 228, 230, 323, 249, 0, -3, -12, -23, 7,
+ 3, -72, -32, -125, 0, -30, nil, 45, -70, -209,
+ nil, nil, nil, -236, -31, nil, 48, -34, 448, 3,
+ -26, 280, nil, -168, -28, -265, nil, -54, -103, -228,
+ 15, -142, -151, nil, -135, -100, -144, -183, -4, 28,
+ 3, -57, 44, 16, 8, -53, -43, -42, -111, -131,
+ -16, -91, nil ]
racc_goto_default = [
- nil, nil, nil, 184, 10, 15, 18, 21, 22, 25,
+ nil, nil, nil, 185, 10, 15, 18, 21, 22, 25,
27, 29, 32, 3, 6, 9, 14, 17, nil, 73,
96, 98, 99, 101, 85, 86, 90, 91, 92, 20,
- nil, nil, nil, nil, 81, nil, 5, nil, nil, 188,
- 276, 189, 191, nil, nil, 138, 84, 87, 148, 63,
- 128, 94, 141, 142, nil, 233, 100, nil, nil, nil,
- 64, nil, nil, 271, 74, nil, nil, nil, nil, nil,
- nil, nil, nil, nil, 50, nil, nil, nil, nil, nil,
- nil, 178 ]
+ nil, nil, nil, nil, 81, nil, 5, nil, nil, 189,
+ 277, 190, 192, nil, nil, 139, 84, 87, 149, 63,
+ 129, 94, 142, 143, nil, 234, 100, nil, nil, nil,
+ 64, nil, nil, 272, 74, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, 51, nil, nil, nil, nil,
+ nil, nil, 180 ]
racc_reduce_table = [
0, 0, :racc_error,
@@ -795,66 +801,67 @@ racc_reduce_table = [
1, 128, :_reduce_160,
1, 128, :_reduce_none,
1, 132, :_reduce_162,
- 3, 132, :_reduce_163,
- 2, 75, :_reduce_164,
- 6, 77, :_reduce_165,
- 5, 77, :_reduce_166,
- 7, 78, :_reduce_167,
- 6, 78, :_reduce_168,
- 6, 79, :_reduce_169,
- 5, 79, :_reduce_170,
- 1, 98, :_reduce_171,
- 1, 93, :_reduce_172,
+ 1, 133, :_reduce_none,
+ 3, 133, :_reduce_164,
+ 2, 75, :_reduce_165,
+ 6, 77, :_reduce_166,
+ 5, 77, :_reduce_167,
+ 7, 78, :_reduce_168,
+ 6, 78, :_reduce_169,
+ 6, 79, :_reduce_170,
+ 5, 79, :_reduce_171,
+ 1, 98, :_reduce_172,
1, 93, :_reduce_173,
1, 93, :_reduce_174,
- 1, 135, :_reduce_none,
- 3, 135, :_reduce_176,
- 1, 137, :_reduce_177,
- 1, 138, :_reduce_178,
- 1, 138, :_reduce_179,
- 1, 138, :_reduce_180,
- 1, 138, :_reduce_none,
- 0, 67, :_reduce_182,
- 0, 139, :_reduce_183,
- 1, 133, :_reduce_none,
- 3, 133, :_reduce_185,
- 3, 133, :_reduce_186,
- 1, 140, :_reduce_none,
- 3, 140, :_reduce_188,
- 3, 141, :_reduce_189,
- 1, 141, :_reduce_190,
- 3, 141, :_reduce_191,
- 1, 141, :_reduce_192,
+ 1, 93, :_reduce_175,
1, 136, :_reduce_none,
- 2, 136, :_reduce_194,
+ 3, 136, :_reduce_177,
+ 1, 138, :_reduce_178,
+ 1, 139, :_reduce_179,
+ 1, 139, :_reduce_180,
+ 1, 139, :_reduce_181,
+ 1, 139, :_reduce_none,
+ 0, 67, :_reduce_183,
+ 0, 140, :_reduce_184,
1, 134, :_reduce_none,
- 2, 134, :_reduce_196,
- 1, 142, :_reduce_none,
- 1, 142, :_reduce_none,
- 1, 86, :_reduce_199,
- 3, 111, :_reduce_200,
- 4, 111, :_reduce_201,
- 2, 111, :_reduce_202,
+ 3, 134, :_reduce_186,
+ 3, 134, :_reduce_187,
+ 1, 141, :_reduce_none,
+ 3, 141, :_reduce_189,
+ 3, 142, :_reduce_190,
+ 1, 142, :_reduce_191,
+ 3, 142, :_reduce_192,
+ 1, 142, :_reduce_193,
+ 1, 137, :_reduce_none,
+ 2, 137, :_reduce_195,
+ 1, 135, :_reduce_none,
+ 2, 135, :_reduce_197,
+ 1, 143, :_reduce_none,
+ 1, 143, :_reduce_none,
+ 1, 86, :_reduce_200,
+ 3, 111, :_reduce_201,
+ 4, 111, :_reduce_202,
+ 2, 111, :_reduce_203,
1, 119, :_reduce_none,
1, 119, :_reduce_none,
0, 97, :_reduce_none,
- 1, 97, :_reduce_206,
- 1, 124, :_reduce_207,
- 3, 120, :_reduce_208,
- 4, 120, :_reduce_209,
- 2, 120, :_reduce_210,
- 1, 143, :_reduce_none,
- 3, 143, :_reduce_212,
+ 1, 97, :_reduce_207,
+ 1, 124, :_reduce_208,
+ 3, 120, :_reduce_209,
+ 4, 120, :_reduce_210,
+ 2, 120, :_reduce_211,
+ 1, 144, :_reduce_none,
3, 144, :_reduce_213,
- 1, 145, :_reduce_214,
- 1, 145, :_reduce_215,
- 4, 113, :_reduce_216,
+ 3, 145, :_reduce_214,
+ 1, 146, :_reduce_215,
+ 1, 146, :_reduce_216,
+ 4, 113, :_reduce_217,
1, 92, :_reduce_none,
- 4, 92, :_reduce_218 ]
+ 4, 92, :_reduce_219 ]
-racc_reduce_n = 219
+racc_reduce_n = 220
-racc_shift_n = 364
+racc_shift_n = 365
racc_token_table = {
false => 0,
@@ -1075,7 +1082,8 @@ Racc_token_to_s_table = [
"svalues",
"selectval",
"sintvalues",
- "qtexts",
+ "string",
+ "strings",
"argumentlist",
"classparent",
"hostnames",
@@ -2147,21 +2155,22 @@ module_eval(<<'.,.,', 'grammar.ra', 630)
module_eval(<<'.,.,', 'grammar.ra', 635)
def _reduce_162(val, _values, result)
- result = [val[0].value]
+ result = [val[0][:value]]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 637)
- def _reduce_163(val, _values, result)
- results = val[0] << val[2].value
+# reduce 163 omitted
+module_eval(<<'.,.,', 'grammar.ra', 637)
+ def _reduce_164(val, _values, result)
+ result = val[0] += val[2]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 641)
- def _reduce_164(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 640)
+ def _reduce_165(val, _values, result)
val[1].each do |file|
import(file)
end
@@ -2172,8 +2181,8 @@ module_eval(<<'.,.,', 'grammar.ra', 641)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 651)
- def _reduce_165(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 650)
+ def _reduce_166(val, _values, result)
@lexer.commentpop
newdefine classname(val[1]), :arguments => val[2], :code => val[4], :line => val[0][:line]
@lexer.indefine = false
@@ -2185,8 +2194,8 @@ module_eval(<<'.,.,', 'grammar.ra', 651)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 658)
- def _reduce_166(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 657)
+ def _reduce_167(val, _values, result)
@lexer.commentpop
newdefine classname(val[1]), :arguments => val[2], :line => val[0][:line]
@lexer.indefine = false
@@ -2196,8 +2205,8 @@ module_eval(<<'.,.,', 'grammar.ra', 658)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 666)
- def _reduce_167(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 665)
+ def _reduce_168(val, _values, result)
@lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
@@ -2208,8 +2217,8 @@ module_eval(<<'.,.,', 'grammar.ra', 666)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 672)
- def _reduce_168(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 671)
+ def _reduce_169(val, _values, result)
@lexer.commentpop
# Our class gets defined in the parent namespace, not our own.
@lexer.namepop
@@ -2220,8 +2229,8 @@ module_eval(<<'.,.,', 'grammar.ra', 672)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 680)
- def _reduce_169(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 679)
+ def _reduce_170(val, _values, result)
@lexer.commentpop
newnode val[1], :parent => val[2], :code => val[4], :line => val[0][:line]
result = nil
@@ -2230,8 +2239,8 @@ module_eval(<<'.,.,', 'grammar.ra', 680)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 684)
- def _reduce_170(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 683)
+ def _reduce_171(val, _values, result)
@lexer.commentpop
newnode val[1], :parent => val[2], :line => val[0][:line]
result = nil
@@ -2240,38 +2249,38 @@ module_eval(<<'.,.,', 'grammar.ra', 684)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 689)
- def _reduce_171(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 688)
+ def _reduce_172(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 691)
- def _reduce_172(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 690)
+ def _reduce_173(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 692)
- def _reduce_173(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 691)
+ def _reduce_174(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 693)
- def _reduce_174(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 692)
+ def _reduce_175(val, _values, result)
result = "class"
result
end
.,.,
-# reduce 175 omitted
+# reduce 176 omitted
-module_eval(<<'.,.,', 'grammar.ra', 699)
- def _reduce_176(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 698)
+ def _reduce_177(val, _values, result)
result = val[0]
result = [result] unless result.is_a?(Array)
result << val[2]
@@ -2280,65 +2289,65 @@ module_eval(<<'.,.,', 'grammar.ra', 699)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 705)
- def _reduce_177(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 704)
+ def _reduce_178(val, _values, result)
result = ast AST::HostName, :value => val[0]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 708)
- def _reduce_178(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 707)
+ def _reduce_179(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 709)
- def _reduce_179(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 708)
+ def _reduce_180(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 710)
- def _reduce_180(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 709)
+ def _reduce_181(val, _values, result)
result = val[0][:value]
result
end
.,.,
-# reduce 181 omitted
+# reduce 182 omitted
-module_eval(<<'.,.,', 'grammar.ra', 714)
- def _reduce_182(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 713)
+ def _reduce_183(val, _values, result)
result = nil
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 718)
- def _reduce_183(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 717)
+ def _reduce_184(val, _values, result)
result = ast AST::ASTArray, :children => []
result
end
.,.,
-# reduce 184 omitted
+# reduce 185 omitted
-module_eval(<<'.,.,', 'grammar.ra', 723)
- def _reduce_185(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 722)
+ def _reduce_186(val, _values, result)
result = nil
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 726)
- def _reduce_186(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 725)
+ def _reduce_187(val, _values, result)
result = val[1]
result = [result] unless result[0].is_a?(Array)
@@ -2346,10 +2355,10 @@ module_eval(<<'.,.,', 'grammar.ra', 726)
end
.,.,
-# reduce 187 omitted
+# reduce 188 omitted
-module_eval(<<'.,.,', 'grammar.ra', 732)
- def _reduce_188(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 731)
+ def _reduce_189(val, _values, result)
result = val[0]
result = [result] unless result[0].is_a?(Array)
result << val[2]
@@ -2358,8 +2367,8 @@ module_eval(<<'.,.,', 'grammar.ra', 732)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 738)
- def _reduce_189(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 737)
+ def _reduce_190(val, _values, result)
Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0][:value], val[2]]
@@ -2367,8 +2376,8 @@ module_eval(<<'.,.,', 'grammar.ra', 738)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 742)
- def _reduce_190(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 741)
+ def _reduce_191(val, _values, result)
Puppet.warning addcontext("Deprecation notice: must now include '$' in prototype")
result = [val[0][:value]]
@@ -2376,56 +2385,56 @@ module_eval(<<'.,.,', 'grammar.ra', 742)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 745)
- def _reduce_191(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 744)
+ def _reduce_192(val, _values, result)
result = [val[0][:value], val[2]]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 747)
- def _reduce_192(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 746)
+ def _reduce_193(val, _values, result)
result = [val[0][:value]]
result
end
.,.,
-# reduce 193 omitted
+# reduce 194 omitted
-module_eval(<<'.,.,', 'grammar.ra', 752)
- def _reduce_194(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 751)
+ def _reduce_195(val, _values, result)
result = val[1]
result
end
.,.,
-# reduce 195 omitted
+# reduce 196 omitted
-module_eval(<<'.,.,', 'grammar.ra', 757)
- def _reduce_196(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 756)
+ def _reduce_197(val, _values, result)
result = val[1]
result
end
.,.,
-# reduce 197 omitted
-
# reduce 198 omitted
-module_eval(<<'.,.,', 'grammar.ra', 763)
- def _reduce_199(val, _values, result)
+# reduce 199 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 762)
+ def _reduce_200(val, _values, result)
result = ast AST::Variable, :value => val[0][:value], :line => val[0][:line]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 767)
- def _reduce_200(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 766)
+ def _reduce_201(val, _values, result)
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -2436,8 +2445,8 @@ module_eval(<<'.,.,', 'grammar.ra', 767)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 774)
- def _reduce_201(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 773)
+ def _reduce_202(val, _values, result)
if val[1].instance_of?(AST::ASTArray)
result = val[1]
else
@@ -2448,37 +2457,37 @@ module_eval(<<'.,.,', 'grammar.ra', 774)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 780)
- def _reduce_202(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 779)
+ def _reduce_203(val, _values, result)
result = ast AST::ASTArray
result
end
.,.,
-# reduce 203 omitted
-
# reduce 204 omitted
# reduce 205 omitted
-module_eval(<<'.,.,', 'grammar.ra', 787)
- def _reduce_206(val, _values, result)
+# reduce 206 omitted
+
+module_eval(<<'.,.,', 'grammar.ra', 786)
+ def _reduce_207(val, _values, result)
result = nil
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 790)
- def _reduce_207(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 789)
+ def _reduce_208(val, _values, result)
result = ast AST::Regex, :value => val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 794)
- def _reduce_208(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 793)
+ def _reduce_209(val, _values, result)
if val[1].instance_of?(AST::ASTHash)
result = val[1]
else
@@ -2489,8 +2498,8 @@ module_eval(<<'.,.,', 'grammar.ra', 794)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 801)
- def _reduce_209(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 800)
+ def _reduce_210(val, _values, result)
if val[1].instance_of?(AST::ASTHash)
result = val[1]
else
@@ -2501,18 +2510,18 @@ module_eval(<<'.,.,', 'grammar.ra', 801)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 807)
- def _reduce_210(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 806)
+ def _reduce_211(val, _values, result)
result = ast AST::ASTHash
result
end
.,.,
-# reduce 211 omitted
+# reduce 212 omitted
-module_eval(<<'.,.,', 'grammar.ra', 812)
- def _reduce_212(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 811)
+ def _reduce_213(val, _values, result)
if val[0].instance_of?(AST::ASTHash)
result = val[0].merge(val[2])
else
@@ -2524,40 +2533,40 @@ module_eval(<<'.,.,', 'grammar.ra', 812)
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 821)
- def _reduce_213(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 820)
+ def _reduce_214(val, _values, result)
result = ast AST::ASTHash, { :value => { val[0] => val[2] } }
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 824)
- def _reduce_214(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 823)
+ def _reduce_215(val, _values, result)
result = val[0][:value]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 825)
- def _reduce_215(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 824)
+ def _reduce_216(val, _values, result)
result = val[0]
result
end
.,.,
-module_eval(<<'.,.,', 'grammar.ra', 828)
- def _reduce_216(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 827)
+ def _reduce_217(val, _values, result)
result = ast AST::HashOrArrayAccess, :variable => val[0][:value], :key => val[2]
result
end
.,.,
-# reduce 217 omitted
+# reduce 218 omitted
-module_eval(<<'.,.,', 'grammar.ra', 833)
- def _reduce_218(val, _values, result)
+module_eval(<<'.,.,', 'grammar.ra', 832)
+ def _reduce_219(val, _values, result)
result = ast AST::HashOrArrayAccess, :variable => val[0], :key => val[2]
result
diff --git a/lib/puppet/parser/parser_support.rb b/lib/puppet/parser/parser_support.rb
index d43b0d3..24ee5fa 100644
--- a/lib/puppet/parser/parser_support.rb
+++ b/lib/puppet/parser/parser_support.rb
@@ -107,91 +107,15 @@ class Puppet::Parser::Parser
end
def find_hostclass(namespace, name)
- find_or_load(namespace, name, :hostclass)
+ known_resource_types.find_or_load(namespace, name, :hostclass)
end
def find_definition(namespace, name)
- find_or_load(namespace, name, :definition)
+ known_resource_types.find_or_load(namespace, name, :definition)
end
- def find_or_load(namespace, name, type)
- method = "find_#{type}"
- namespace = namespace.downcase
- name = name.downcase
- fullname = (namespace + "::" + name).sub(/^::/, '')
-
- if name =~ /^::/
- names_to_try = [name.sub(/^::/, '')]
- else
- names_to_try = [fullname]
-
- # Try to load the module init file if we're a qualified name
- names_to_try << fullname.split("::")[0] if fullname.include?("::")
-
- # Otherwise try to load the bare name on its own. This
- # is appropriate if the class we're looking for is in a
- # module that's different from our namespace.
- names_to_try << name
- names_to_try.compact!
- end
-
- until (result = known_resource_types.send(method, namespace, name)) or names_to_try.empty? do
- self.load(names_to_try.shift)
- end
- return result
- end
-
- # Import our files.
def import(file)
- if Puppet[:ignoreimport]
- return AST::ASTArray.new(:children => [])
- end
- # use a path relative to the file doing the importing
- if @lexer.file
- dir = @lexer.file.sub(%r{[^/]+$},'').sub(/\/$/, '')
- else
- dir = "."
- end
- if dir == ""
- dir = "."
- end
- result = ast AST::ASTArray
-
- # We can't interpolate at this point since we don't have any
- # scopes set up. Warn the user if they use a variable reference
- raise "Got no file" unless file
- pat = file
- if pat.index("$")
- Puppet.warning(
- "The import of #{pat} contains a variable reference;" +
- " variables are not interpolated for imports " +
- "in file #{@lexer.file} at line #{@lexer.line}"
- )
- end
- files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => @environment)
- if files.size == 0
- raise Puppet::ImportError.new("No file(s) found for import " +
- "of '#{pat}'")
- end
-
- files.collect { |file|
- parser = Puppet::Parser::Parser.new(@environment)
- parser.files = self.files
- Puppet.debug("importing '%s'" % file)
-
- unless file =~ /^#{File::SEPARATOR}/
- file = File.join(dir, file)
- end
- begin
- parser.file = file
- rescue Puppet::AlreadyImportedError
- # This file has already been imported to just move on
- next
- end
-
- # This will normally add code to the 'main' class.
- parser.parse
- }
+ known_resource_types.loader.import(file, @lexer.file)
end
def initialize(env)
@@ -203,69 +127,6 @@ class Puppet::Parser::Parser
# Initialize or reset all of our variables.
def initvars
@lexer = Puppet::Parser::Lexer.new()
- @files = {}
- @loaded = []
- @loading = {}
- @loading.extend(MonitorMixin)
- class << @loading
- def done_with(item)
- synchronize do
- delete(item)[:busy].signal if self.has_key?(item) and self[item][:loader] == Thread.current
- end
- end
- def owner_of(item)
- synchronize do
- if !self.has_key? item
- self[item] = { :loader => Thread.current, :busy => self.new_cond}
- :nobody
- elsif self[item][:loader] == Thread.current
- :this_thread
- else
- flag = self[item][:busy]
- flag.wait
- flag.signal
- :another_thread
- end
- end
- end
- end
- end
-
- # Utility method factored out of load
- def able_to_import?(classname,item,msg)
- unless @loaded.include?(item)
- begin
- case @loading.owner_of(item)
- when :this_thread
- return
- when :another_thread
- return able_to_import?(classname,item,msg)
- when :nobody
- import(item)
- Puppet.info "Autoloaded #{msg}"
- @loaded << item
- end
- rescue Puppet::ImportError => detail
- # We couldn't load the item
- ensure
- @loading.done_with(item)
- end
- end
- # We don't know whether we're looking for a class or definition, so we have
- # to test for both.
- return known_resource_types.hostclass(classname) || known_resource_types.definition(classname)
- end
-
- # Try to load a class, since we could not find it.
- def load(classname)
- return false if classname == ""
- filename = classname.gsub("::", File::SEPARATOR)
- mod = filename.scan(/^[\w-]+/).shift
-
- # First try to load the top-level module then the individual file
- [[mod, "module %s" % mod ],
- [filename,"file %s from module %s" % [filename, mod]]
- ].any? { |item,description| able_to_import?(classname,item,description) }
end
# Split an fq name into a namespace and name
@@ -365,15 +226,6 @@ class Puppet::Parser::Parser
require self.file
end
- # See if any of the files have changed.
- def reparse?
- if file = @files.detect { |name, file| file.changed? }
- return file[1].stamp
- else
- return false
- end
- end
-
def string=(string)
@lexer.string = string
end
diff --git a/lib/puppet/parser/type_loader.rb b/lib/puppet/parser/type_loader.rb
new file mode 100644
index 0000000..3268eae
--- /dev/null
+++ b/lib/puppet/parser/type_loader.rb
@@ -0,0 +1,144 @@
+require 'puppet/node/environment'
+
+class Puppet::Parser::TypeLoader
+ include Puppet::Node::Environment::Helper
+
+ class Helper < Hash
+ include MonitorMixin
+ def done_with(item)
+ synchronize do
+ delete(item)[:busy].signal if self.has_key?(item) and self[item][:loader] == Thread.current
+ end
+ end
+ def owner_of(item)
+ synchronize do
+ if !self.has_key? item
+ self[item] = { :loader => Thread.current, :busy => self.new_cond}
+ :nobody
+ elsif self[item][:loader] == Thread.current
+ :this_thread
+ else
+ flag = self[item][:busy]
+ flag.wait
+ flag.signal
+ :another_thread
+ end
+ end
+ end
+ end
+
+ # Import our files.
+ def import(file, current_file = nil)
+ return if Puppet[:ignoreimport]
+
+ # use a path relative to the file doing the importing
+ if current_file
+ dir = current_file.sub(%r{[^/]+$},'').sub(/\/$/, '')
+ else
+ dir = "."
+ end
+ if dir == ""
+ dir = "."
+ end
+
+ pat = file
+ files = Puppet::Parser::Files.find_manifests(pat, :cwd => dir, :environment => environment)
+ if files.size == 0
+ raise Puppet::ImportError.new("No file(s) found for import of '#{pat}'")
+ end
+
+ files.each do |file|
+ unless file =~ /^#{File::SEPARATOR}/
+ file = File.join(dir, file)
+ end
+ @imported[file] = true
+ parse_file(file)
+ end
+ end
+
+ def imported?(file)
+ @imported.has_key?(file)
+ end
+
+ def known_resource_types
+ environment.known_resource_types
+ end
+
+ def initialize(env)
+ self.environment = env
+ @loaded = []
+ @loading = Helper.new
+
+ @imported = {}
+ end
+
+ def load_until(namespaces, name)
+ return nil if name == "" # special-case main.
+ name2files(namespaces, name).each do |filename|
+ import_if_possible(filename) do
+ import(filename)
+ @loaded << filename
+ end
+ if result = yield(filename)
+ Puppet.info "Automatically imported #{name} from #{filename}"
+ return result
+ end
+ end
+ nil
+ end
+
+ def loaded?(name)
+ @loaded.include?(name)
+ end
+
+ def name2files(namespaces, name)
+ return [name.sub(/^::/, '').gsub("::", File::SEPARATOR)] if name =~ /^::/
+
+ result = namespaces.inject([]) do |names_to_try, namespace|
+ fullname = (namespace + "::" + name).sub(/^::/, '')
+
+ # Try to load the module init file if we're a qualified name
+ if fullname.include?("::")
+ names_to_try << fullname.split("::")[0]
+ end
+
+ # Then the fully qualified name
+ names_to_try << fullname
+ end
+
+ # Otherwise try to load the bare name on its own. This
+ # is appropriate if the class we're looking for is in a
+ # module that's different from our namespace.
+ result << name
+ result.uniq.collect { |f| f.gsub("::", File::SEPARATOR) }
+ end
+
+ def parse_file(file)
+ Puppet.debug("importing '#{file}'")
+ parser = Puppet::Parser::Parser.new(environment)
+ parser.file = file
+ parser.parse
+ end
+
+ private
+
+ # Utility method factored out of load for handling thread-safety.
+ # This isn't tested in the specs, because that's basically impossible.
+ def import_if_possible(file)
+ return if @loaded.include?(file)
+ begin
+ case @loading.owner_of(file)
+ when :this_thread
+ return
+ when :another_thread
+ return import_if_possible(file)
+ when :nobody
+ yield
+ end
+ rescue Puppet::ImportError => detail
+ # We couldn't load the item
+ ensure
+ @loading.done_with(file)
+ end
+ end
+end
diff --git a/lib/puppet/resource/type_collection.rb b/lib/puppet/resource/type_collection.rb
index 513c1c6..4dbf753 100644
--- a/lib/puppet/resource/type_collection.rb
+++ b/lib/puppet/resource/type_collection.rb
@@ -55,6 +55,11 @@ class Puppet::Resource::TypeCollection
instance
end
+ def loader
+ require 'puppet/parser/type_loader'
+ @loader ||= Puppet::Parser::TypeLoader.new(environment)
+ end
+
def node(name)
name = munge_name(name)
@@ -115,16 +120,30 @@ class Puppet::Resource::TypeCollection
nil
end
+ def find_or_load(namespaces, name, type)
+ name = name.downcase
+ namespaces = [namespaces] unless namespaces.is_a?(Array)
+ namespaces = namespaces.collect { |ns| ns.downcase }
+
+ # This could be done in the load_until, but the knowledge seems to
+ # belong here.
+ if r = find(namespaces, name, type)
+ return r
+ end
+
+ return loader.load_until(namespaces, name) { find(namespaces, name, type) }
+ end
+
def find_node(name)
find("", name, :node)
end
- def find_hostclass(namespace, name)
- find(namespace, name, :hostclass)
+ def find_hostclass(namespaces, name)
+ find_or_load(namespaces, name, :hostclass)
end
- def find_definition(namespace, name)
- find(namespace, name, :definition)
+ def find_definition(namespaces, name)
+ find_or_load(namespaces, name, :definition)
end
[:hostclasses, :nodes, :definitions].each do |m|
diff --git a/spec/integration/resource/type_collection.rb b/spec/integration/resource/type_collection.rb
new file mode 100755
index 0000000..da309c6
--- /dev/null
+++ b/spec/integration/resource/type_collection.rb
@@ -0,0 +1,96 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet_spec/files'
+require 'puppet/resource/type_collection'
+
+describe Puppet::Resource::TypeCollection do
+ describe "when autoloading from modules" do
+ include PuppetSpec::Files
+
+ before do
+ @dir = tmpfile("autoload_testing")
+ Puppet[:modulepath] = @dir
+
+ FileUtils.mkdir_p @dir
+ @code = Puppet::Resource::TypeCollection.new("env")
+ Puppet::Node::Environment.new("env").stubs(:known_resource_types).returns @code
+ end
+
+ # Setup a module.
+ def mk_module(name, files = {})
+ mdir = File.join(@dir, name)
+ mandir = File.join(mdir, "manifests")
+ FileUtils.mkdir_p mandir
+
+ defs = files.delete(:define)
+
+ Dir.chdir(mandir) do
+ files.each do |file, classes|
+ File.open("#{file}.pp", "w") do |f|
+ classes.each { |klass|
+ if defs
+ f.puts "define #{klass} {}"
+ else
+ f.puts "class #{klass} {}"
+ end
+ }
+ end
+ end
+ end
+ end
+
+ it "should return nil when a class can't be found or loaded" do
+ @code.find_hostclass('', 'nosuchclass').should be_nil
+ end
+
+ it "should load the module's init file first" do
+ name = "simple"
+ mk_module(name, :init => [name])
+
+ @code.find_hostclass("", name).name.should == name
+ end
+
+ it "should load the module's init file even when searching from a different namespace" do
+ name = "simple"
+ mk_module(name, :init => [name])
+
+ @code.find_hostclass("other::ns", name).name.should == name
+ end
+
+ it "should be able to load definitions from the module base file" do
+ name = "simpdef"
+ mk_module(name, :define => true, :init => [name])
+ @code.find_definition("", name).name.should == name
+ end
+
+ it "should be able to load qualified classes from the module base file" do
+ modname = "both"
+ name = "sub"
+ mk_module(modname, :init => %w{both both::sub})
+
+ @code.find_hostclass("both", name).name.should == "both::sub"
+ end
+
+ it "should be able load classes from a separate file" do
+ modname = "separate"
+ name = "sub"
+ mk_module(modname, :init => %w{separate}, :sub => %w{separate::sub})
+ @code.find_hostclass("separate", name).name.should == "separate::sub"
+ end
+
+ it "should not fail when loading from a separate file if there is no module file" do
+ modname = "alone"
+ name = "sub"
+ mk_module(modname, :sub => %w{alone::sub})
+ lambda { @code.find_hostclass("alone", name) }.should_not raise_error
+ end
+
+ it "should be able to load definitions from their own file" do
+ name = "mymod"
+ mk_module(name, :define => true, :mydefine => ["mymod::mydefine"])
+ @code.find_definition("", "mymod::mydefine").name.should == "mymod::mydefine"
+ end
+ end
+end
diff --git a/spec/unit/parser/parser.rb b/spec/unit/parser/parser.rb
index ccb7e84..ed4492a 100755
--- a/spec/unit/parser/parser.rb
+++ b/spec/unit/parser/parser.rb
@@ -32,6 +32,13 @@ describe Puppet::Parser do
parser = Puppet::Parser::Parser.new "development"
parser.known_resource_types.should equal(rtc)
end
+
+ it "should delegate importing to the known resource type loader" do
+ parser = Puppet::Parser::Parser.new "development"
+ parser.known_resource_types.loader.expects(:import).with("newfile", "current_file")
+ parser.lexer.expects(:file).returns "current_file"
+ parser.import("newfile")
+ end
describe "when parsing files" do
before do
@@ -327,91 +334,19 @@ describe Puppet::Parser do
end
describe "when looking up definitions" do
- it "should check for them by name" do
- @parser.stubs(:find_or_load).with("namespace","name",:definition).returns(:this_value)
+ it "should use the known resource types to check for them by name" do
+ @parser.known_resource_types.stubs(:find_or_load).with("namespace","name",:definition).returns(:this_value)
@parser.find_definition("namespace","name").should == :this_value
end
end
describe "when looking up hostclasses" do
- it "should check for them by name" do
- @parser.stubs(:find_or_load).with("namespace","name",:hostclass).returns(:this_value)
+ it "should use the known resource types to check for them by name" do
+ @parser.known_resource_types.stubs(:find_or_load).with("namespace","name",:hostclass).returns(:this_value)
@parser.find_hostclass("namespace","name").should == :this_value
end
end
- describe "when looking up names" do
- before :each do
- @known_resource_types = mock 'loaded code'
- @known_resource_types.stubs(:find_my_type).with('loaded_namespace', 'loaded_name').returns(true)
- @known_resource_types.stubs(:find_my_type).with('bogus_namespace', 'bogus_name' ).returns(false)
- @parser = Puppet::Parser::Parser.new "development"
- @parser.stubs(:known_resource_types).returns @known_resource_types
- end
-
- describe "that are already loaded" do
- it "should not try to load anything" do
- @parser.expects(:load).never
- @parser.find_or_load("loaded_namespace","loaded_name",:my_type)
- end
- it "should return true" do
- @parser.find_or_load("loaded_namespace","loaded_name",:my_type).should == true
- end
- end
-
- describe "that aren't already loaded" do
- it "should first attempt to load them with the all lowercase fully qualified name" do
- @known_resource_types.stubs(:find_my_type).with("foo_namespace","foo_name").returns(false,true,true)
- @parser.expects(:load).with("foo_namespace::foo_name").returns(true).then.raises(Exception)
- @parser.find_or_load("Foo_namespace","Foo_name",:my_type).should == true
- end
-
- it "should next attempt to load them with the all lowercase namespace" do
- @known_resource_types.stubs(:find_my_type).with("foo_namespace","foo_name").returns(false,false,true,true)
- @parser.expects(:load).with("foo_namespace::foo_name").returns(false).then.raises(Exception)
- @parser.expects(:load).with("foo_namespace" ).returns(true ).then.raises(Exception)
- @parser.find_or_load("Foo_namespace","Foo_name",:my_type).should == true
- end
-
- it "should finally attempt to load them with the all lowercase unqualified name" do
- @known_resource_types.stubs(:find_my_type).with("foo_namespace","foo_name").returns(false,false,false,true,true)
- @parser.expects(:load).with("foo_namespace::foo_name").returns(false).then.raises(Exception)
- @parser.expects(:load).with("foo_namespace" ).returns(false).then.raises(Exception)
- @parser.expects(:load).with( "foo_name").returns(true ).then.raises(Exception)
- @parser.find_or_load("Foo_namespace","Foo_name",:my_type).should == true
- end
-
- it "should return false if the name isn't found" do
- @parser.stubs(:load).returns(false)
- @parser.find_or_load("Bogus_namespace","Bogus_name",:my_type).should == false
- end
-
- it "should directly look for fully qualified classes" do
- @known_resource_types.stubs(:find_hostclass).with("foo_namespace","::foo_name").returns(false, true)
- @parser.expects(:load).with("foo_name").returns true
- @parser.find_or_load("foo_namespace","::foo_name",:hostclass)
- end
- end
- end
-
- describe "when loading classnames" do
- before :each do
- @known_resource_types = mock 'loaded code'
- @parser = Puppet::Parser::Parser.new "development"
- @parser.stubs(:known_resource_types).returns @known_resource_types
- end
-
- it "should just return false if the classname is empty" do
- @parser.expects(:import).never
- @parser.load("").should == false
- end
-
- it "should just return true if the item is loaded" do
- pending "Need to access internal state (@parser's @loaded) to force this"
- @parser.load("").should == false
- end
- end
-
describe "when parsing classes" do
before :each do
@krt = Puppet::Resource::TypeCollection.new("development")
diff --git a/spec/unit/parser/type_loader.rb b/spec/unit/parser/type_loader.rb
new file mode 100644
index 0000000..de181eb
--- /dev/null
+++ b/spec/unit/parser/type_loader.rb
@@ -0,0 +1,191 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+require 'puppet/parser/type_loader'
+require 'puppet_spec/files'
+
+describe Puppet::Parser::TypeLoader do
+ include PuppetSpec::Files
+
+ before do
+ @loader = Puppet::Parser::TypeLoader.new(:myenv)
+ end
+
+ it "should support an environment" do
+ loader = Puppet::Parser::TypeLoader.new(:myenv)
+ loader.environment.name.should == :myenv
+ end
+
+ it "should include the Environment Helper" do
+ @loader.class.ancestors.should be_include(Puppet::Node::Environment::Helper)
+ end
+
+ it "should delegate its known resource types to its environment" do
+ @loader.known_resource_types.should be_instance_of(Puppet::Resource::TypeCollection)
+ end
+
+ describe "when loading names from namespaces" do
+ it "should do nothing if the name to import is an empty string" do
+ @loader.expects(:name2files).never
+ @loader.load_until(["foo"], "") { |f| false }.should be_nil
+ end
+
+ it "should turn the provided namespaces and name into a list of files" do
+ @loader.expects(:name2files).with(["foo"], "bar").returns []
+ @loader.load_until(["foo"], "bar") { |f| false }
+ end
+
+ it "should attempt to import each generated name" do
+ @loader.expects(:name2files).returns %w{foo bar}
+ @loader.expects(:import).with("foo")
+ @loader.expects(:import).with("bar")
+ @loader.load_until(["foo"], "bar") { |f| false }
+ end
+
+ it "should yield after each import" do
+ yielded = []
+ @loader.expects(:name2files).returns %w{foo bar}
+ @loader.expects(:import).with("foo")
+ @loader.expects(:import).with("bar")
+ @loader.load_until(["foo"], "bar") { |f| yielded << f; false }
+ yielded.should == %w{foo bar}
+ end
+
+ it "should stop importing when the yielded block returns true" do
+ yielded = []
+ @loader.expects(:name2files).returns %w{foo bar baz}
+ @loader.expects(:import).with("foo")
+ @loader.expects(:import).with("bar")
+ @loader.expects(:import).with("baz").never
+ @loader.load_until(["foo"], "bar") { |f| true if f == "bar" }
+ end
+
+ it "should return the result of the block" do
+ yielded = []
+ @loader.expects(:name2files).returns %w{foo bar baz}
+ @loader.expects(:import).with("foo")
+ @loader.expects(:import).with("bar")
+ @loader.expects(:import).with("baz").never
+ @loader.load_until(["foo"], "bar") { |f| 10 if f == "bar" }.should == 10
+ end
+
+ it "should return nil if the block never returns true" do
+ @loader.expects(:name2files).returns %w{foo bar}
+ @loader.expects(:import).with("foo")
+ @loader.expects(:import).with("bar")
+ @loader.load_until(["foo"], "bar") { |f| false }.should be_nil
+ end
+
+ it "should know when a given name has been loaded" do
+ @loader.expects(:name2files).returns %w{file}
+ @loader.expects(:import).with("file")
+ @loader.load_until(["foo"], "bar") { |f| true }
+ @loader.should be_loaded("file")
+ end
+ end
+
+ describe "when mapping names to files" do
+ {
+ [["foo"], "::bar::baz"] => %w{bar/baz},
+ [[""], "foo::bar"] => %w{foo foo/bar},
+ [%w{foo}, "bar"] => %w{foo foo/bar bar},
+ [%w{a b}, "bar"] => %w{a a/bar b b/bar bar},
+ [%w{a::b::c}, "bar"] => %w{a a/b/c/bar bar},
+ [%w{a::b}, "foo::bar"] => %w{a a/b/foo/bar foo/bar}
+ }.each do |inputs, outputs|
+ it "should produce #{outputs.inspect} from the #{inputs[0].inspect} namespace and #{inputs[1]} name" do
+ @loader.name2files(*inputs).should == outputs
+ end
+ end
+ end
+
+ describe "when importing" do
+ before do
+ Puppet::Parser::Files.stubs(:find_manifests).returns %w{file}
+ @loader.stubs(:parse_file)
+ end
+
+ it "should return immediately when imports are being ignored" do
+ Puppet::Parser::Files.expects(:find_manifests).never
+ Puppet[:ignoreimport] = true
+ @loader.import("foo").should be_nil
+ end
+
+ it "should find all manifests matching the file or pattern" do
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| pat == "myfile" }.returns %w{one}
+ @loader.import("myfile")
+ end
+
+ it "should use the directory of the current file if one is set" do
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:cwd] == "/current" }.returns %w{one}
+ @loader.import("myfile", "/current/file")
+ end
+
+ it "should pass the environment when looking for files" do
+ Puppet::Parser::Files.expects(:find_manifests).with { |pat, opts| opts[:environment] == @loader.environment }.returns %w{one}
+ @loader.import("myfile")
+ end
+
+ it "should fail if no files are found" do
+ Puppet::Parser::Files.expects(:find_manifests).returns []
+ lambda { @loader.import("myfile") }.should raise_error(Puppet::ImportError)
+ end
+
+ it "should parse each found file" do
+ Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ @loader.expects(:parse_file).with("/one")
+ @loader.import("myfile")
+ end
+
+ it "should make each file qualified before attempting to parse it" do
+ Puppet::Parser::Files.expects(:find_manifests).returns %w{one}
+ @loader.expects(:parse_file).with("/current/one")
+ @loader.import("myfile", "/current/file")
+ end
+
+ it "should know when a given file has been imported" do
+ Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ @loader.import("myfile")
+
+ @loader.should be_imported("/one")
+ end
+
+ it "should not attempt to import files that have already been imported" do
+ Puppet::Parser::Files.expects(:find_manifests).returns %w{/one}
+ @loader.expects(:parse_file).once
+ @loader.import("myfile")
+
+ # This will fail if it tries to reimport the file.
+ @loader.import("myfile")
+ end
+ end
+
+ describe "when parsing a file" do
+ before do
+ @parser = Puppet::Parser::Parser.new(@loader.environment)
+ @parser.stubs(:parse)
+ @parser.stubs(:file=)
+ Puppet::Parser::Parser.stubs(:new).with(@loader.environment).returns @parser
+ end
+
+ it "should create a new parser instance for each file using the current environment" do
+ Puppet::Parser::Parser.expects(:new).with(@loader.environment).returns @parser
+ @loader.parse_file("/my/file")
+ end
+
+ it "should assign the parser its file and parse" do
+ @parser.expects(:file=).with("/my/file")
+ @parser.expects(:parse)
+ @loader.parse_file("/my/file")
+ end
+ end
+
+ it "should be able to add classes to the current resource type collection" do
+ file = tmpfile("simple_file")
+ File.open(file, "w") { |f| f.puts "class foo {}" }
+ @loader.import(file)
+
+ @loader.known_resource_types.hostclass("foo").should be_instance_of(Puppet::Resource::Type)
+ end
+end
diff --git a/spec/unit/resource/type_collection.rb b/spec/unit/resource/type_collection.rb
index ea78afc..638a028 100644
--- a/spec/unit/resource/type_collection.rb
+++ b/spec/unit/resource/type_collection.rb
@@ -21,6 +21,10 @@ describe Puppet::Resource::TypeCollection do
Puppet::Resource::TypeCollection.new("testing").environment.should equal(env)
end
+ it "should create a 'loader' at initialization" do
+ Puppet::Resource::TypeCollection.new("testing").loader.should be_instance_of(Puppet::Parser::TypeLoader)
+ end
+
it "should be able to add a resource type" do
Puppet::Resource::TypeCollection.new("env").should respond_to(:add)
end
@@ -85,6 +89,51 @@ describe Puppet::Resource::TypeCollection do
loader.node("node").should be_nil
end
+ describe "when looking up names" do
+ before do
+ @type = Puppet::Resource::Type.new(:hostclass, "ns::klass")
+ end
+
+ it "should support looking up with multiple namespaces" do
+ @code.add @type
+ @code.find_hostclass(%w{boo baz ns}, "klass").should equal(@type)
+ end
+
+ it "should not attempt to import anything when the type is already defined" do
+ @code.add @type
+ @code.loader.expects(:import).never
+ @code.find_hostclass(%w{ns}, "klass").should equal(@type)
+ end
+
+ describe "that need to be loaded" do
+ it "should use the loader to load the files" do
+ @code.loader.expects(:load_until).with(["ns"], "klass")
+ @code.find_or_load(["ns"], "klass", :hostclass)
+ end
+
+ it "should downcase the name and downcase and array-fy the namespaces before passing to the loader" do
+ @code.loader.expects(:load_until).with(["ns"], "klass")
+ @code.find_or_load("Ns", "Klass", :hostclass)
+ end
+
+ it "should attempt to find the type when the loader yields" do
+ @code.loader.expects(:load_until).yields
+ @code.expects(:find).with(["ns"], "klass", :hostclass).times(2).returns(false).then.returns(true)
+ @code.find_or_load("ns", "klass", :hostclass)
+ end
+
+ it "should return the result of 'load_until'" do
+ @code.loader.expects(:load_until).returns "foo"
+ @code.find_or_load("Ns", "Klass", :hostclass).should == "foo"
+ end
+
+ it "should return nil if the name isn't found" do
+ @code.stubs(:load_until).returns(nil)
+ @code.find_or_load("Ns", "Klass", :hostclass).should be_nil
+ end
+ end
+ end
+
%w{hostclass node definition}.each do |data|
before do
@instance = Puppet::Resource::Type.new(data, "foo")
@@ -217,15 +266,15 @@ describe Puppet::Resource::TypeCollection do
loader.find_node("bar")
end
- it "should use the generic 'find' method to find hostclasses" do
+ it "should use the 'find_or_load' method to find hostclasses" do
loader = Puppet::Resource::TypeCollection.new("env")
- loader.expects(:find).with("foo", "bar", :hostclass)
+ loader.expects(:find_or_load).with("foo", "bar", :hostclass)
loader.find_hostclass("foo", "bar")
end
- it "should use the generic 'find' method to find definitions" do
+ it "should use the 'find_or_load' method to find definitions" do
loader = Puppet::Resource::TypeCollection.new("env")
- loader.expects(:find).with("foo", "bar", :definition)
+ loader.expects(:find_or_load).with("foo", "bar", :definition)
loader.find_definition("foo", "bar")
end
diff --git a/test/language/parser.rb b/test/language/parser.rb
index db6177d..18688aa 100755
--- a/test/language/parser.rb
+++ b/test/language/parser.rb
@@ -655,65 +655,6 @@ file { "/tmp/yayness":
}
end
- def test_module_import
- basedir = File.join(tmpdir(), "module-import")
- @@tmpfiles << basedir
- Dir.mkdir(basedir)
- modfiles = [ "init.pp", "mani1.pp", "mani2.pp",
- "sub/smani1.pp", "sub/smani2.pp" ]
-
- modpath = File.join(basedir, "modules")
- Puppet[:modulepath] = modpath
-
- modname = "amod"
- manipath = File::join(modpath, modname, Puppet::Module::MANIFESTS)
- FileUtils::mkdir_p(File::join(manipath, "sub"))
- targets = []
- modfiles.each do |fname|
- target = File::join(basedir, File::basename(fname, '.pp'))
- targets << target
- txt = %[ file { '#{target}': content => "#{fname}" } ]
- if fname == "init.pp"
- txt = %[import 'mani1' \nimport '#{modname}/mani2'\nimport '#{modname}/sub/*.pp'\n ] + txt
- end
- File::open(File::join(manipath, fname), "w") do |f|
- f.puts txt
- end
- end
-
- manifest_texts = [ "import '#{modname}'",
- "import '#{modname}/init'",
- "import '#{modname}/init.pp'" ]
-
- manifest = File.join(modpath, "manifest.pp")
- manifest_texts.each do |txt|
- File.open(manifest, "w") { |f| f.puts txt }
-
- assert_nothing_raised {
- parser = mkparser
- parser.file = manifest
- parser.parse
- }
- assert_creates(manifest, *targets)
- end
- end
-
- # #544
- def test_ignoreimports
- parser = mkparser
-
- assert(! Puppet[:ignoreimport], ":ignoreimport defaulted to true")
- assert_raise(Puppet::ParseError, "Did not fail on missing import") do
- parser.parse("import 'nosuchfile'")
- end
- assert_nothing_raised("could not set :ignoreimport") do
- Puppet[:ignoreimport] = true
- end
- assert_nothing_raised("Parser did not follow :ignoreimports") do
- parser.parse("import 'nosuchfile'")
- end
- end
-
def test_multiple_imports_on_one_line
one = tempfile
two = tempfile
@@ -744,22 +685,6 @@ file { "/tmp/yayness":
end
end
- # #588
- def test_globbing_with_directories
- dir = tempfile
- Dir.mkdir(dir)
- subdir = File.join(dir, "subdir")
- Dir.mkdir(subdir)
- file = File.join(dir, "file.pp")
- maker = tempfile
- File.open(file, "w") { |f| f.puts "file { '#{maker}': ensure => file }" }
-
- parser = mkparser
- assert_nothing_raised("Globbing failed when it matched a directory") do
- parser.import("%s/*" % dir)
- end
- end
-
# #629 - undef keyword
def test_undef
parser = mkparser
@@ -805,128 +730,6 @@ file { "/tmp/yayness":
end
end
- # Setup a module.
- def mk_module(name, files = {})
- mdir = File.join(@dir, name)
- mandir = File.join(mdir, "manifests")
- FileUtils.mkdir_p mandir
-
- if defs = files[:define]
- files.delete(:define)
- end
- Dir.chdir(mandir) do
- files.each do |file, classes|
- File.open("%s.pp" % file, "w") do |f|
- classes.each { |klass|
- if defs
- f.puts "define %s {}" % klass
- else
- f.puts "class %s {}" % klass
- end
- }
- end
- end
- end
- end
-
- # #596 - make sure classes and definitions load automatically if they're in modules, so we don't have to manually load each one.
- def test_module_autoloading
- @dir = tempfile
- Puppet[:modulepath] = @dir
-
- FileUtils.mkdir_p @dir
-
- parser = mkparser
-
- # Make sure we fail like normal for actually missing classes
- assert_nil(parser.find_hostclass("", "nosuchclass"), "Did not return nil on missing classes")
-
- # test the simple case -- the module class itself
- name = "simple"
- mk_module(name, :init => [name])
-
- # Try to load the module automatically now
- klass = parser.find_hostclass("", name)
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload class from module init file")
- assert_equal(name, klass.name, "Incorrect class was returned")
-
- # Try loading the simple module when we're in something other than the base namespace.
- parser = mkparser
- klass = parser.find_hostclass("something::else", name)
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload class from module init file")
- assert_equal(name, klass.name, "Incorrect class was returned")
-
- # Now try it with a definition as the base file
- name = "simpdef"
- mk_module(name, :define => true, :init => [name])
-
- klass = parser.find_definition("", name)
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload class from module init file")
- assert_equal(name, klass.name, "Incorrect class was returned")
-
- # Now try it with namespace classes where both classes are in the init file
- parser = mkparser
- modname = "both"
- name = "sub"
- mk_module(modname, :init => %w{both both::sub})
-
- # First try it with a namespace
- klass = parser.find_hostclass("both", name)
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from module init file with a namespace")
- assert_equal("both::sub", klass.name, "Incorrect class was returned")
-
- # Now try it using the fully qualified name
- parser = mkparser
- klass = parser.find_hostclass("", "both::sub")
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from module init file with no namespace")
- assert_equal("both::sub", klass.name, "Incorrect class was returned")
-
-
- # Now try it with the class in a different file
- parser = mkparser
- modname = "separate"
- name = "sub"
- mk_module(modname, :init => %w{separate}, :sub => %w{separate::sub})
-
- # First try it with a namespace
- klass = parser.find_hostclass("separate", name)
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from separate file with a namespace")
- assert_equal("separate::sub", klass.name, "Incorrect class was returned")
-
- # Now try it using the fully qualified name
- parser = mkparser
- klass = parser.find_hostclass("", "separate::sub")
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from separate file with no namespace")
- assert_equal("separate::sub", klass.name, "Incorrect class was returned")
-
- # Now make sure we don't get a failure when there's no module file
- parser = mkparser
- modname = "alone"
- name = "sub"
- mk_module(modname, :sub => %w{alone::sub})
-
- # First try it with a namespace
- assert_nothing_raised("Could not autoload file when module file is missing") do
- klass = parser.find_hostclass("alone", name)
- end
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from alone file with a namespace")
- assert_equal("alone::sub", klass.name, "Incorrect class was returned")
-
- # Now try it using the fully qualified name
- parser = mkparser
- klass = parser.find_hostclass("", "alone::sub")
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload sub class from alone file with no namespace")
- assert_equal("alone::sub", klass.name, "Incorrect class was returned")
-
- # and with the definition in its own file
- name = "mymod"
- mk_module(name, :define => true, :mydefine => ["mymod::mydefine"])
-
- klass = parser.find_definition("", "mymod::mydefine")
- assert_instance_of(Puppet::Resource::Type, klass, "Did not autoload definition from its own file")
- assert_equal("mymod::mydefine", klass.name, "Incorrect definition was returned")
- end
-
# Make sure class, node, and define methods are case-insensitive
def test_structure_case_insensitivity
parser = mkparser
--
Puppet packaging for Debian
More information about the Pkg-puppet-devel
mailing list