summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Wolfe <jes5199@gmail.com>2010-08-02 20:54:59 -0700
committermarkus <markus@AVA-351181.(none)>2010-08-03 15:19:34 -0700
commit37568bdd3f8cc3514eb9d0bf0eae3302686bc13d (patch)
tree1f4042a15444adfe01a82ce786b3055904cdb357
parent449315a2c705df2396852462a1d1e14774b9f117 (diff)
downloadpuppet-37568bdd3f8cc3514eb9d0bf0eae3302686bc13d.tar.gz
puppet-37568bdd3f8cc3514eb9d0bf0eae3302686bc13d.tar.xz
puppet-37568bdd3f8cc3514eb9d0bf0eae3302686bc13d.zip
[#4423] class { shouldn't get stored on the namespace stack
The new syntax for instantiating parameterized classes was confusing the lexer's notion of namespaces. This is a simple fix to prevent that syntax from polluting the namespaces.
-rw-r--r--lib/puppet/parser/lexer.rb2
-rwxr-xr-xspec/unit/parser/lexer_spec.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb
index aa04f17a0..24999bf4e 100644
--- a/lib/puppet/parser/lexer.rb
+++ b/lib/puppet/parser/lexer.rb
@@ -483,7 +483,7 @@ class Puppet::Parser::Lexer
yield [final_token.name, token_value]
if @previous_token
- namestack(value) if @previous_token.name == :CLASS
+ namestack(value) if @previous_token.name == :CLASS and value != '{'
if @previous_token.name == :DEFINE
if indefine?
diff --git a/spec/unit/parser/lexer_spec.rb b/spec/unit/parser/lexer_spec.rb
index a85d1b257..bcf49baeb 100755
--- a/spec/unit/parser/lexer_spec.rb
+++ b/spec/unit/parser/lexer_spec.rb
@@ -619,6 +619,12 @@ describe "Puppet::Parser::Lexer in the old tests" do
@lexer.namespace.should == "base::sub"
end
+ it "should not put class instantiation on the namespace" do
+ @lexer.string = "class base { class sub { class { mode"
+ @lexer.fullscan
+ @lexer.namespace.should == "base::sub"
+ end
+
it "should correctly handle fully qualified names" do
@lexer.string = "class base { class sub::more {"
@lexer.fullscan