diff --git a/changelog/fix_an_error_for_lint_redundant_dir_glob_sort.md b/changelog/fix_an_error_for_lint_redundant_dir_glob_sort.md new file mode 100644 index 000000000000..efbb30b16950 --- /dev/null +++ b/changelog/fix_an_error_for_lint_redundant_dir_glob_sort.md @@ -0,0 +1 @@ +* [#9342](https://github.com/rubocop-hq/rubocop/issues/9342): Fix an error for `Lint/RedundantDirGlobSort` when using `collection.sort`. ([@koic][]) diff --git a/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb b/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb index 23eb968322f9..430880f05394 100644 --- a/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb +++ b/lib/rubocop/cop/lint/redundant_dir_glob_sort.rb @@ -34,11 +34,13 @@ class RedundantDirGlobSort < Base def on_send(node) return unless (receiver = node.receiver) - return unless receiver.receiver.const_type? && receiver.receiver.short_name == :Dir + return unless receiver.receiver&.const_type? && receiver.receiver.short_name == :Dir return unless GLOB_METHODS.include?(receiver.method_name) - add_offense(node.loc.selector) do |corrector| - corrector.remove(node.loc.selector) + selector = node.loc.selector + + add_offense(selector) do |corrector| + corrector.remove(selector) corrector.remove(node.loc.dot) end end diff --git a/spec/rubocop/cop/lint/redundant_dir_glob_sort_spec.rb b/spec/rubocop/cop/lint/redundant_dir_glob_sort_spec.rb index e689e3a17175..3192ceeafc26 100644 --- a/spec/rubocop/cop/lint/redundant_dir_glob_sort_spec.rb +++ b/spec/rubocop/cop/lint/redundant_dir_glob_sort_spec.rb @@ -54,6 +54,12 @@ end RUBY end + + it 'does not register an offense when using `collection.sort`' do + expect_no_offenses(<<~RUBY) + collection.sort + RUBY + end end context 'when Ruby 2.7 or lower', :ruby27 do