Brice -- Your patch fixes the overt behaviour (and the test is a good addition) but I'd favour a slightly different approach. Since the core issue is that CLASSNAME (like NAME) is never valid in the ____ position of "blah ${___}" construct, I'd rather add the same Token#acceptable? test on CLASSNAME (and also CLASSREF, which appears to present the same challenge) as is already used on NAME, like so:
diff --git a/lib/puppet/parser/lexer.rb b/lib/puppet/parser/lexer.rb index 2a1f88e..a495763 100644 --- a/lib/puppet/parser/lexer.rb +++ b/lib/puppet/parser/lexer.rb @@ -173,9 +173,11 @@ class Puppet::Parser::Lexer end [string_token, value] end - def (TOKENS[:NAME]).acceptable?(context={}) - ![:DQPRE,:DQMID].include? context[:after] - end + [:NAME,:CLASSNAME,:CLASSREF].each { |name_token| + def (TOKENS[name_token]).acceptable?(context={}) + ![:DQPRE,:DQMID].include? context[:after] + end + } TOKENS.add_token :COMMENT, %r{#.*}, :accumulate => true, :skip => true do |lexer,value| value.sub!(/# ?/,'') This basically says "it is only acceptable to generate a NAME, CLASSNAME, or CLASSREF in a context that isn't directly after a DQPRE (..."blah ${...) or a DQMID (...} blather ${...) token. Does that seem reasonable? -- Markus -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to puppet-...@googlegroups.com. To unsubscribe from this group, send email to puppet-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.