diff --git a/lib/puppet-lint/data.rb b/lib/puppet-lint/data.rb index 92e75a34..c327966d 100644 --- a/lib/puppet-lint/data.rb +++ b/lib/puppet-lint/data.rb @@ -201,6 +201,9 @@ def find_resource_type_token(index) lbrace_idx = tokens[0..index].rindex do |token| token.type == :LBRACE && token.prev_code_token.type != :QMARK end + + raise PuppetLint::SyntaxError, tokens[index] if lbrace_idx.nil? + tokens[lbrace_idx].prev_code_token end diff --git a/spec/puppet-lint/data_spec.rb b/spec/puppet-lint/data_spec.rb index 7bf13536..6a44d2dc 100644 --- a/spec/puppet-lint/data_spec.rb +++ b/spec/puppet-lint/data_spec.rb @@ -20,6 +20,18 @@ } end end + + context 'when typo in namespace separator makes parser look for resource' do + let(:manifest) { '$testparam = $::module:;testparam' } + + it 'raises a SyntaxError' do + expect { + data.resource_indexes + }.to raise_error(PuppetLint::SyntaxError) { |error| + expect(error.token).to eq(data.tokens[5]) + } + end + end end describe '.insert' do