Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rubygem-rubocop for openSUSE:Factory 
checked in at 2023-12-14 22:03:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-rubocop (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-rubocop.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-rubocop"

Thu Dec 14 22:03:21 2023 rev:51 rq:1132980 version:1.59.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-rubocop/rubygem-rubocop.changes  
2023-12-06 23:49:16.065534158 +0100
+++ 
/work/SRC/openSUSE:Factory/.rubygem-rubocop.new.25432/rubygem-rubocop.changes   
    2023-12-14 22:03:23.504610926 +0100
@@ -1,0 +2,55 @@
+Tue Dec 12 16:48:05 UTC 2023 - Mykola Krachkovsky <w01dn...@gmail.com>
+
+- updated to version 1.59.0
+
+  ## 1.59.0 (2023-12-11)
+
+  ### New features
+
+  * [#12518](https://github.com/rubocop/rubocop/pull/12518): Add new 
`Lint/ItWithoutArgumentsInBlock` cop. ([@koic][])
+
+  ### Bug fixes
+
+  * [#12434](https://github.com/rubocop/rubocop/issues/12434): Fix a false 
positive for `Lint/LiteralAssignmentInCondition` when using interpolated string 
or xstring literals. ([@koic][])
+  * [#12435](https://github.com/rubocop/rubocop/issues/12435): Fix a false 
positive for `Lint/SelfAssignment` when using attribute assignment with method 
call with arguments. ([@koic][])
+  * [#12444](https://github.com/rubocop/rubocop/issues/12444): Fix false 
positive for `Style/HashEachMethods` when receiver literal is not a hash 
literal. ([@koic][])
+  * [#12524](https://github.com/rubocop/rubocop/issues/12524): Fix a false 
positive for `Style/MethodCallWithArgsParentheses` when `EnforcedStyle: 
omit_parentheses` and parens in `when` clause is used to pass an argument. 
([@koic][])
+  * [#12505](https://github.com/rubocop/rubocop/pull/12505): Fix a false 
positive for `Style/RedundantParentheses` when using parenthesized `lambda` or 
`proc` with `do`...`end` block. ([@koic][])
+  * [#12442](https://github.com/rubocop/rubocop/issues/12442): Fix an 
incorrect autocorrect for `Style/CombinableLoops` when looping over the same 
data as previous loop in `do`...`end` and `{`...`}` blocks. ([@koic][])
+  * [#12432](https://github.com/rubocop/rubocop/pull/12432): Fix a false 
positive for `Lint/LiteralAssignmentInCondition` when using parallel assignment 
with splat operator in block of guard condition. ([@koic][])
+  * [#12441](https://github.com/rubocop/rubocop/issues/12441): Fix false 
positives for `Style/HashEachMethods` when using destructed block arguments. 
([@koic][])
+  * [#12436](https://github.com/rubocop/rubocop/issues/12436): Fix false 
positives for `Style/RedundantParentheses` when a part of range is a 
parenthesized condition. ([@koic][])
+  * [#12429](https://github.com/rubocop/rubocop/issues/12429): Fix incorrect 
autocorrect for `Style/MapToHash` when using dot method calls for `to_h`. 
([@koic][])
+  * [#12488](https://github.com/rubocop/rubocop/issues/12488): Make 
`Lint/HashCompareByIdentity` aware of safe navigation operator. ([@koic][])
+  * [#12489](https://github.com/rubocop/rubocop/issues/12489): Make 
`Lint/NextWithoutAccumulator` aware of safe navigation operator. ([@koic][])
+  * [#12490](https://github.com/rubocop/rubocop/issues/12490): Make 
`Lint/NumberConversion` aware of safe navigation operator. ([@koic][])
+  * [#12491](https://github.com/rubocop/rubocop/issues/12491): Make 
`Lint/RedundantWithIndex` aware of safe navigation operator. ([@koic][])
+  * [#12492](https://github.com/rubocop/rubocop/issues/12492): Make 
`Lint/RedundantWithObject` aware of safe navigation operator. ([@koic][])
+  * [#12493](https://github.com/rubocop/rubocop/issues/12493): Make 
`Lint/UnmodifiedReduceAccumulator` aware of safe navigation operator. 
([@koic][])
+  * [#12473](https://github.com/rubocop/rubocop/issues/12473): Make 
`Style/ClassCheck` aware of safe navigation operator. ([@koic][])
+  * [#12445](https://github.com/rubocop/rubocop/issues/12445): Make 
`Style/CollectionCompact` aware of safe navigation operator. ([@koic][])
+  * [#12474](https://github.com/rubocop/rubocop/issues/12474): Make 
`Style/ConcatArrayLiterals` aware of safe navigation operator. ([@koic][])
+  * [#12476](https://github.com/rubocop/rubocop/issues/12476): Make 
`Style/DateTime` aware of safe navigation operator. ([@koic][])
+  * [#12479](https://github.com/rubocop/rubocop/issues/12479): Make 
`Style/EachWithObject` aware of safe navigation operator. ([@koic][])
+  * [#12446](https://github.com/rubocop/rubocop/issues/12446): Make 
`Style/HashExcept` aware of safe navigation operator. ([@koic][])
+  * [#12447](https://github.com/rubocop/rubocop/issues/12447): Make 
`Style/MapCompactWithConditionalBlock` aware of safe navigation operator. 
([@koic][])
+  * [#12484](https://github.com/rubocop/rubocop/issues/12484): Make 
`Style/Next` aware of safe navigation operator. ([@koic][])
+  * [#12486](https://github.com/rubocop/rubocop/issues/12486): Make 
`Style/RedundantArgument` aware of safe navigation operator. ([@koic][])
+  * [#12454](https://github.com/rubocop/rubocop/issues/12454): Make 
`Style/RedundantFetchBlock` aware of safe navigation operator. ([@koic][])
+  * [#12495](https://github.com/rubocop/rubocop/issues/12495): Make 
`Layout/RedundantLineBreak` aware of safe navigation operator. ([@koic][])
+  * [#12455](https://github.com/rubocop/rubocop/issues/12455): Make 
`Style/RedundantSortBy` aware of safe navigation operator. ([@koic][])
+  * [#12456](https://github.com/rubocop/rubocop/issues/12456): Make 
`Style/RedundantSortBy` aware of safe navigation operator. ([@koic][])
+  * [#12480](https://github.com/rubocop/rubocop/issues/12480): Make 
`Style/ExactRegexpMatch` aware of safe navigation operator. ([@koic][])
+  * [#12457](https://github.com/rubocop/rubocop/issues/12457): Make 
`Style/Sample` aware of safe navigation operator. ([@koic][])
+  * [#12458](https://github.com/rubocop/rubocop/issues/12458): Make 
`Style/SelectByRegexp` cops aware of safe navigation operator. ([@koic][])
+  * [#12494](https://github.com/rubocop/rubocop/issues/12494): Make 
`Layout/SingleLineBlockChain` aware of safe navigation operator. ([@koic][])
+  * [#12461](https://github.com/rubocop/rubocop/issues/12461): Make 
`Style/StringChars` aware of safe navigation operator. ([@koic][])
+  * [#12468](https://github.com/rubocop/rubocop/issues/12468): Make 
`Style/Strip` aware of safe navigation operator. ([@koic][])
+  * [#12469](https://github.com/rubocop/rubocop/issues/12469): Make 
`Style/UnpackFirst` aware of safe navigation operator. ([@koic][])
+
+  ### Changes
+
+  * [#12522](https://github.com/rubocop/rubocop/pull/12522): Make 
`Style/MethodCallWithoutArgsParentheses` allow the parenthesized `it` method in 
a block. ([@koic][])
+  * [#12523](https://github.com/rubocop/rubocop/pull/12523): Make 
`Style/RedundantSelf` allow the `self.it` method in a block. ([@koic][])
+
+-------------------------------------------------------------------

Old:
----
  rubocop-1.58.0.gem

New:
----
  rubocop-1.59.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-rubocop.spec ++++++
--- /var/tmp/diff_new_pack.AfY1sb/_old  2023-12-14 22:03:24.140633866 +0100
+++ /var/tmp/diff_new_pack.AfY1sb/_new  2023-12-14 22:03:24.140633866 +0100
@@ -24,7 +24,7 @@
 #
 
 Name:           rubygem-rubocop
-Version:        1.58.0
+Version:        1.59.0
 Release:        0
 %define mod_name rubocop
 %define mod_full_name %{mod_name}-%{version}

++++++ rubocop-1.58.0.gem -> rubocop-1.59.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2023-12-01 13:49:31.000000000 +0100
+++ new/README.md       2023-12-11 11:24:09.000000000 +0100
@@ -53,7 +53,7 @@
 in your `Gemfile`:
 
 ```rb
-gem 'rubocop', '~> 1.58', require: false
+gem 'rubocop', '~> 1.59', require: false
 ```
 
 See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) 
for further details.
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/default.yml new/config/default.yml
--- old/config/default.yml      2023-12-01 13:49:31.000000000 +0100
+++ new/config/default.yml      2023-12-11 11:24:09.000000000 +0100
@@ -1963,6 +1963,12 @@
   VersionAdded: '0.50'
   VersionChanged: '1.40'
 
+Lint/ItWithoutArgumentsInBlock:
+  Description: 'Checks uses of `it` calls without arguments in block.'
+  Reference: 'https://bugs.ruby-lang.org/issues/18980'
+  Enabled: pending
+  VersionAdded: '1.59'
+
 Lint/LambdaWithoutLiteralBlock:
   Description: 'Checks uses of lambda without a literal block.'
   Enabled: pending
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/layout/heredoc_indentation.rb 
new/lib/rubocop/cop/layout/heredoc_indentation.rb
--- old/lib/rubocop/cop/layout/heredoc_indentation.rb   2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/layout/heredoc_indentation.rb   2023-12-11 
11:24:09.000000000 +0100
@@ -8,7 +8,7 @@
       #
       # Note: When ``Layout/LineLength``'s `AllowHeredoc` is false (not 
default),
       #       this cop does not add any offenses for long here documents to
-      #       avoid `Layout/LineLength`'s offenses.
+      #       avoid ``Layout/LineLength``'s offenses.
       #
       # @example
       #   # bad
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/layout/redundant_line_break.rb 
new/lib/rubocop/cop/layout/redundant_line_break.rb
--- old/lib/rubocop/cop/layout/redundant_line_break.rb  2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/layout/redundant_line_break.rb  2023-12-11 
11:24:09.000000000 +0100
@@ -62,6 +62,7 @@
 
           register_offense(node)
         end
+        alias on_csend on_send
 
         private
 
@@ -135,7 +136,7 @@
             .gsub(/" *\\\n\s*'/, %q(" + ')) # Double quote, backslash, and 
then single quote
             .gsub(/' *\\\n\s*"/, %q(' + ")) # Single quote, backslash, and 
then double quote
             .gsub(/(["']) *\\\n\s*\1/, '')  # Double or single quote, 
backslash, then same quote
-            .gsub(/\n\s*(?=\.\w)/, '')      # Extra space within method 
chaining
+            .gsub(/\n\s*(?=(&)?\.\w)/, '')  # Extra space within method 
chaining which includes `&.`
             .gsub(/\s*\\?\n\s*/, ' ')       # Any other line break, with or 
without backslash
         end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/layout/single_line_block_chain.rb 
new/lib/rubocop/cop/layout/single_line_block_chain.rb
--- old/lib/rubocop/cop/layout/single_line_block_chain.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/layout/single_line_block_chain.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -33,6 +33,7 @@
           range = offending_range(node)
           add_offense(range) { |corrector| corrector.insert_before(range, 
"\n") } if range
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb 
new/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb
--- old/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb 
2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb 
2023-12-11 11:24:09.000000000 +0100
@@ -6,10 +6,10 @@
       # Checks for places where binary operator has identical operands.
       #
       # It covers arithmetic operators: `-`, `/`, `%`;
-      # comparison operators: `==`, `===`, `=~`, `>`, `>=`, `<`, `<=`;
+      # comparison operators: `==`, `===`, `=~`, `>`, `>=`, `<`, ``<=``;
       # bitwise operators: `|`, `^`, `&`;
       # boolean operators: `&&`, `||`
-      # and "spaceship" operator - `<=>`.
+      # and "spaceship" operator - ``<=>``.
       #
       # Simple arithmetic operations are allowed by this cop: `+`, `*`, `**`, 
`<<` and `>>`.
       # Although these can be rewritten in a different way, it should not be 
necessary to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb 
new/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb
--- old/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb  2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb  2023-12-11 
11:24:09.000000000 +0100
@@ -3,7 +3,7 @@
 module RuboCop
   module Cop
     module Lint
-      # Checks for overwriting an exception with an exception result by use 
`rescue =>`.
+      # Checks for overwriting an exception with an exception result by use 
``rescue =>``.
       #
       # You intended to write as `rescue StandardError`.
       # However, you have written `rescue => StandardError`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/hash_compare_by_identity.rb 
new/lib/rubocop/cop/lint/hash_compare_by_identity.rb
--- old/lib/rubocop/cop/lint/hash_compare_by_identity.rb        2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/hash_compare_by_identity.rb        2023-12-11 
11:24:09.000000000 +0100
@@ -35,12 +35,13 @@
 
         # @!method id_as_hash_key?(node)
         def_node_matcher :id_as_hash_key?, <<~PATTERN
-          (send _ {:key? :has_key? :fetch :[] :[]=} (send _ :object_id) ...)
+          (call _ {:key? :has_key? :fetch :[] :[]=} (send _ :object_id) ...)
         PATTERN
 
         def on_send(node)
           add_offense(node) if id_as_hash_key?(node)
         end
+        alias on_csend on_send
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/lint/it_without_arguments_in_block.rb 
new/lib/rubocop/cop/lint/it_without_arguments_in_block.rb
--- old/lib/rubocop/cop/lint/it_without_arguments_in_block.rb   1970-01-01 
01:00:00.000000000 +0100
+++ new/lib/rubocop/cop/lint/it_without_arguments_in_block.rb   2023-12-11 
11:24:09.000000000 +0100
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+module RuboCop
+  module Cop
+    module Lint
+      # Emulates the following Ruby warning in Ruby 3.3.
+      #
+      # [source,ruby]
+      # ----
+      # $ ruby -e '0.times { it }'
+      # -e:1: warning: `it` calls without arguments will refer to the first 
block param in Ruby 3.4;
+      # use it() or self.it
+      # ----
+      #
+      # `it` calls without arguments will refer to the first block param in 
Ruby 3.4.
+      # So use `it()` or `self.it` to ensure compatibility.
+      #
+      # @example
+      #
+      #   # bad
+      #   do_something { it }
+      #
+      #   # good
+      #   do_something { it() }
+      #   do_something { self.it }
+      #
+      class ItWithoutArgumentsInBlock < Base
+        include NodePattern::Macros
+
+        MSG = '`it` calls without arguments will refer to the first block 
param in Ruby 3.4; ' \
+              'use `it()` or `self.it`.'
+
+        def on_block(node) # rubocop:disable InternalAffairs/NumblockHandler
+          return unless (body = node.body)
+          return unless node.arguments.empty_and_without_delimiters?
+
+          if body.send_type? && deprecated_it_method?(body)
+            add_offense(body)
+          else
+            body.each_descendant(:send).each do |send_node|
+              next unless deprecated_it_method?(send_node)
+
+              add_offense(send_node)
+            end
+          end
+        end
+
+        def deprecated_it_method?(node)
+          return false unless node.method?(:it)
+
+          !node.receiver && node.arguments.empty? && !node.parenthesized? && 
!node.block_literal?
+        end
+      end
+    end
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/lint/literal_assignment_in_condition.rb 
new/lib/rubocop/cop/lint/literal_assignment_in_condition.rb
--- old/lib/rubocop/cop/lint/literal_assignment_in_condition.rb 2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/literal_assignment_in_condition.rb 2023-12-11 
11:24:09.000000000 +0100
@@ -41,9 +41,9 @@
             next unless asgn_node.loc.operator
 
             rhs = asgn_node.to_a.last
-            next unless rhs.respond_to?(:literal?) && rhs.literal?
+            next if !forbidden_literal?(rhs) || 
parallel_assignment_with_splat_operator?(rhs)
 
-            range = asgn_node.loc.operator.join(rhs.source_range.end)
+            range = offense_range(asgn_node, rhs)
 
             add_offense(range, message: format(MSG, literal: rhs.source))
           end
@@ -58,6 +58,20 @@
 
           node.each_child_node { |child| traverse_node(child, &block) }
         end
+
+        def forbidden_literal?(node)
+          return false if node.dstr_type? || node.xstr_type?
+
+          node.respond_to?(:literal?) && node.literal?
+        end
+
+        def parallel_assignment_with_splat_operator?(node)
+          node.array_type? && node.values.first&.splat_type?
+        end
+
+        def offense_range(asgn_node, rhs)
+          asgn_node.loc.operator.join(rhs.source_range.end)
+        end
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/next_without_accumulator.rb 
new/lib/rubocop/cop/lint/next_without_accumulator.rb
--- old/lib/rubocop/cop/lint/next_without_accumulator.rb        2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/next_without_accumulator.rb        2023-12-11 
11:24:09.000000000 +0100
@@ -34,35 +34,20 @@
             add_offense(void_next) if void_next
           end
         end
-
-        def on_numblock(node)
-          on_numblock_body_of_reduce(node) do |body|
-            void_next = body.each_node(:next).find do |n|
-              n.children.empty? && parent_numblock_node(n) == node
-            end
-
-            add_offense(void_next) if void_next
-          end
-        end
+        alias on_numblock on_block
 
         private
 
         # @!method on_block_body_of_reduce(node)
         def_node_matcher :on_block_body_of_reduce, <<~PATTERN
-          (block (send _recv {:reduce :inject} !sym) _blockargs $(begin ...))
-        PATTERN
-
-        # @!method on_numblock_body_of_reduce(node)
-        def_node_matcher :on_numblock_body_of_reduce, <<~PATTERN
-          (numblock (send _recv {:reduce :inject} !sym) _argscount $(begin 
...))
+          {
+            (block (call _recv {:reduce :inject} !sym) _blockargs $(begin ...))
+            (numblock (call _recv {:reduce :inject} !sym) _argscount $(begin 
...))
+          }
         PATTERN
 
         def parent_block_node(node)
-          node.each_ancestor(:block).first
-        end
-
-        def parent_numblock_node(node)
-          node.each_ancestor(:numblock).first
+          node.each_ancestor(:block, :numblock).first
         end
       end
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/number_conversion.rb 
new/lib/rubocop/cop/lint/number_conversion.rb
--- old/lib/rubocop/cop/lint/number_conversion.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/number_conversion.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -9,7 +9,7 @@
       #
       # Conversion with `Integer`, `Float`, etc. will raise an `ArgumentError`
       # if given input that is not numeric (eg. an empty string), whereas
-      # `to_i`, etc. will try to convert regardless of input (`''.to_i => 0`).
+      # `to_i`, etc. will try to convert regardless of input (``''.to_i => 
0``).
       # As such, this cop is disabled by default because it's not necessarily
       # always correct to raise if a value is not numeric.
       #
@@ -91,19 +91,24 @@
 
         # @!method to_method(node)
         def_node_matcher :to_method, <<~PATTERN
-          (send $_ ${#{METHODS}})
+          (call $_ ${#{METHODS}})
         PATTERN
 
         # @!method to_method_symbol(node)
         def_node_matcher :to_method_symbol, <<~PATTERN
-          {(send _ $_ ${(sym ${#{METHODS}})} ...)
-           (send _ $_ ${(block_pass (sym ${#{METHODS}}))} ...)}
+          (call _ $_ ${
+            {
+              (sym ${#{METHODS}})
+              (block_pass (sym ${#{METHODS}}))
+            }
+          } ...)
         PATTERN
 
         def on_send(node)
           handle_conversion_method(node)
           handle_as_symbol(node)
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/redundant_with_index.rb 
new/lib/rubocop/cop/lint/redundant_with_index.rb
--- old/lib/rubocop/cop/lint/redundant_with_index.rb    2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/redundant_with_index.rb    2023-12-11 
11:24:09.000000000 +0100
@@ -56,10 +56,10 @@
         def_node_matcher :redundant_with_index?, <<~PATTERN
           {
             (block
-              $(send _ {:each_with_index :with_index} ...)
+              $(call _ {:each_with_index :with_index} ...)
               (args (arg _)) ...)
             (numblock
-              $(send _ {:each_with_index :with_index} ...) 1 ...)
+              $(call _ {:each_with_index :with_index} ...) 1 ...)
           }
         PATTERN
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/redundant_with_object.rb 
new/lib/rubocop/cop/lint/redundant_with_object.rb
--- old/lib/rubocop/cop/lint/redundant_with_object.rb   2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/redundant_with_object.rb   2023-12-11 
11:24:09.000000000 +0100
@@ -56,9 +56,9 @@
         def_node_matcher :redundant_with_object?, <<~PATTERN
           {
             (block
-              $(send _ {:each_with_object :with_object} _) (args (arg _)) ...)
+              $(call _ {:each_with_object :with_object} _) (args (arg _)) ...)
             (numblock
-              $(send _ {:each_with_object :with_object} _) 1 ...)
+              $(call _ {:each_with_object :with_object} _) 1 ...)
           }
         PATTERN
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/self_assignment.rb 
new/lib/rubocop/cop/lint/self_assignment.rb
--- old/lib/rubocop/cop/lint/self_assignment.rb 2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/lint/self_assignment.rb 2023-12-11 11:24:09.000000000 
+0100
@@ -102,6 +102,7 @@
 
         def handle_attribute_assignment(node)
           first_argument = node.first_argument
+          return unless first_argument.respond_to?(:arguments) && 
first_argument.arguments.empty?
 
           if first_argument.call_type? &&
              node.receiver == first_argument.receiver &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb 
new/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb
--- old/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb   2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb   2023-12-11 
11:24:09.000000000 +0100
@@ -69,8 +69,8 @@
         # @!method reduce_with_block?(node)
         def_node_matcher :reduce_with_block?, <<~PATTERN
           {
-            (block (send _recv {:reduce :inject} ...) args ...)
-            (numblock (send _recv {:reduce :inject} ...) ...)
+            (block (call _recv {:reduce :inject} ...) args ...)
+            (numblock (call _recv {:reduce :inject} ...) ...)
           }
         PATTERN
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/lint/useless_times.rb 
new/lib/rubocop/cop/lint/useless_times.rb
--- old/lib/rubocop/cop/lint/useless_times.rb   2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/lint/useless_times.rb   2023-12-11 11:24:09.000000000 
+0100
@@ -4,7 +4,7 @@
   module Cop
     module Lint
       # Checks for uses of `Integer#times` that will never yield
-      # (when the integer <= 0) or that will only ever yield once
+      # (when the integer ``<= 0``) or that will only ever yield once
       # (`1.times`).
       #
       # @safety
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/metrics/abc_size.rb 
new/lib/rubocop/cop/metrics/abc_size.rb
--- old/lib/rubocop/cop/metrics/abc_size.rb     2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/metrics/abc_size.rb     2023-12-11 11:24:09.000000000 
+0100
@@ -10,9 +10,9 @@
       #
       # Interpreting ABC size:
       #
-      # * <= 17 satisfactory
-      # * 18..30 unsatisfactory
-      # * > 30 dangerous
+      # * ``<= 17`` satisfactory
+      # * `18..30` unsatisfactory
+      # * `>` 30 dangerous
       #
       # You can have repeated "attributes" calls count as a single "branch".
       # For this purpose, attributes are any method with no argument; no 
attempt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/naming/constant_name.rb 
new/lib/rubocop/cop/naming/constant_name.rb
--- old/lib/rubocop/cop/naming/constant_name.rb 2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/naming/constant_name.rb 2023-12-11 11:24:09.000000000 
+0100
@@ -61,8 +61,7 @@
         end
 
         def allowed_method_call_on_rhs?(node)
-          node&.send_type? &&
-            (node.receiver.nil? || !literal_receiver?(node))
+          node&.send_type? && (node.receiver.nil? || !literal_receiver?(node))
         end
 
         # @!method literal_receiver?(node)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/array_first_last.rb 
new/lib/rubocop/cop/style/array_first_last.rb
--- old/lib/rubocop/cop/style/array_first_last.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/array_first_last.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -4,7 +4,7 @@
   module Cop
     module Style
       # Identifies usages of `arr[0]` and `arr[-1]` and suggests to change
-      # them to use `arr.first` and `arr.instead`.
+      # them to use `arr.first` and `arr.last` instead.
       #
       # The cop is disabled by default due to safety concerns.
       #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/class_check.rb 
new/lib/rubocop/cop/style/class_check.rb
--- old/lib/rubocop/cop/style/class_check.rb    2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/class_check.rb    2023-12-11 11:24:09.000000000 
+0100
@@ -40,6 +40,7 @@
             corrector.replace(node.loc.selector, replacement)
           end
         end
+        alias on_csend on_send
 
         def message(node)
           if node.method?(:is_a?)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/collection_compact.rb 
new/lib/rubocop/cop/style/collection_compact.rb
--- old/lib/rubocop/cop/style/collection_compact.rb     2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/collection_compact.rb     2023-12-11 
11:24:09.000000000 +0100
@@ -53,7 +53,7 @@
 
         # @!method reject_method_with_block_pass?(node)
         def_node_matcher :reject_method_with_block_pass?, <<~PATTERN
-          (send !nil? {:reject :delete_if :reject!}
+          (call !nil? {:reject :delete_if :reject!}
             (block_pass
               (sym :nil?)))
         PATTERN
@@ -61,21 +61,21 @@
         # @!method reject_method?(node)
         def_node_matcher :reject_method?, <<~PATTERN
           (block
-            (send
+            (call
               !nil? {:reject :delete_if :reject!})
             $(args ...)
-            (send
+            (call
               $(lvar _) :nil?))
         PATTERN
 
         # @!method select_method?(node)
         def_node_matcher :select_method?, <<~PATTERN
           (block
-            (send
+            (call
               !nil? {:select :select!})
             $(args ...)
-            (send
-              (send
+            (call
+              (call
                 $(lvar _) :nil?) :!))
         PATTERN
 
@@ -91,6 +91,7 @@
 
           add_offense(range, message: message) { |corrector| 
corrector.replace(range, good) }
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/combinable_loops.rb 
new/lib/rubocop/cop/style/combinable_loops.rb
--- old/lib/rubocop/cop/style/combinable_loops.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/combinable_loops.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -105,6 +105,17 @@
         def combine_with_left_sibling(corrector, node)
           
corrector.remove(node.left_sibling.body.source_range.end.join(node.left_sibling.loc.end))
           
corrector.remove(node.source_range.begin.join(node.body.source_range.begin))
+
+          correct_end_of_block(corrector, node)
+        end
+
+        def correct_end_of_block(corrector, node)
+          return unless node.left_sibling.respond_to?(:braces?)
+          return if node.right_sibling&.block_type? || 
node.right_sibling&.numblock_type?
+
+          end_of_block = node.left_sibling.braces? ? '}' : ' end'
+          corrector.remove(node.loc.end)
+          corrector.insert_before(node.source_range.end, end_of_block)
         end
       end
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/concat_array_literals.rb 
new/lib/rubocop/cop/style/concat_array_literals.rb
--- old/lib/rubocop/cop/style/concat_array_literals.rb  2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/concat_array_literals.rb  2023-12-11 
11:24:09.000000000 +0100
@@ -63,6 +63,7 @@
           end
         end
         # rubocop:enable Metrics
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/date_time.rb 
new/lib/rubocop/cop/style/date_time.rb
--- old/lib/rubocop/cop/style/date_time.rb      2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/date_time.rb      2023-12-11 11:24:09.000000000 
+0100
@@ -49,12 +49,12 @@
       class DateTime < Base
         extend AutoCorrector
 
-        CLASS_MSG = 'Prefer Time over DateTime.'
-        COERCION_MSG = 'Do not use #to_datetime.'
+        CLASS_MSG = 'Prefer `Time` over `DateTime`.'
+        COERCION_MSG = 'Do not use `#to_datetime`.'
 
         # @!method date_time?(node)
         def_node_matcher :date_time?, <<~PATTERN
-          (send (const {nil? (cbase)} :DateTime) ...)
+          (call (const {nil? (cbase)} :DateTime) ...)
         PATTERN
 
         # @!method historic_date?(node)
@@ -64,7 +64,7 @@
 
         # @!method to_datetime?(node)
         def_node_matcher :to_datetime?, <<~PATTERN
-          (send _ :to_datetime)
+          (call _ :to_datetime)
         PATTERN
 
         def on_send(node)
@@ -75,6 +75,7 @@
 
           add_offense(node, message: message) { |corrector| 
autocorrect(corrector, node) }
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/each_with_object.rb 
new/lib/rubocop/cop/style/each_with_object.rb
--- old/lib/rubocop/cop/style/each_with_object.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/each_with_object.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -58,12 +58,12 @@
 
         # @!method each_with_object_block_candidate?(node)
         def_node_matcher :each_with_object_block_candidate?, <<~PATTERN
-          (block $(send _ {:inject :reduce} _) $_ $_)
+          (block $(call _ {:inject :reduce} _) $_ $_)
         PATTERN
 
         # @!method each_with_object_numblock_candidate?(node)
         def_node_matcher :each_with_object_numblock_candidate?, <<~PATTERN
-          (numblock $(send _ {:inject :reduce} _) 2 $_)
+          (numblock $(call _ {:inject :reduce} _) 2 $_)
         PATTERN
 
         def autocorrect_block(corrector, node, return_value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/exact_regexp_match.rb 
new/lib/rubocop/cop/style/exact_regexp_match.rb
--- old/lib/rubocop/cop/style/exact_regexp_match.rb     2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/exact_regexp_match.rb     2023-12-11 
11:24:09.000000000 +0100
@@ -30,7 +30,7 @@
 
         # @!method exact_regexp_match(node)
         def_node_matcher :exact_regexp_match, <<~PATTERN
-          (send
+          (call
             _ {:=~ :=== :!~ :match :match?}
             (regexp
               (str $_)
@@ -49,6 +49,7 @@
             corrector.replace(node, prefer)
           end
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/hash_each_methods.rb 
new/lib/rubocop/cop/style/hash_each_methods.rb
--- old/lib/rubocop/cop/style/hash_each_methods.rb      2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/hash_each_methods.rb      2023-12-11 
11:24:09.000000000 +0100
@@ -58,18 +58,20 @@
 
         # rubocop:disable Metrics/AbcSize
         def on_block(node)
+          return unless handleable?(node)
+
           kv_each(node) do |target, method|
             register_kv_offense(target, method) and return
           end
 
           return unless (key, value = each_arguments(node))
 
-          if unused_block_arg_exist?(node, value.source)
+          if unused_block_arg_exist?(node, value)
             message = message('each_key', node.method_name, value.source)
             unused_range = key.source_range.end.join(value.source_range.end)
 
             register_each_args_offense(node, message, 'each_key', unused_range)
-          elsif unused_block_arg_exist?(node, key.source)
+          elsif unused_block_arg_exist?(node, key)
             message = message('each_value', node.method_name, key.source)
             unused_range = 
key.source_range.begin.join(value.source_range.begin)
 
@@ -88,6 +90,12 @@
 
         private
 
+        def handleable?(node)
+          return false unless (root_receiver = root_receiver(node))
+
+          !root_receiver.literal? || root_receiver.hash_type?
+        end
+
         def register_kv_offense(target, method)
           return unless (parent_receiver = target.receiver.receiver)
           return if allowed_receiver?(parent_receiver)
@@ -99,8 +107,16 @@
           end
         end
 
-        def unused_block_arg_exist?(node, block_arg_source)
-          
node.body.each_descendant(:lvar).map(&:source).none?(block_arg_source)
+        def unused_block_arg_exist?(node, block_arg)
+          lvar_sources = node.body.each_descendant(:lvar).map(&:source)
+
+          if block_arg.mlhs_type?
+            block_arg.each_descendant(:arg).all? do |block_arg|
+              lvar_sources.none?(block_arg.source)
+            end
+          else
+            lvar_sources.none?(block_arg.source)
+          end
         end
 
         def message(prefer, method_name, unused_code)
@@ -127,6 +143,15 @@
           end
         end
 
+        def root_receiver(node)
+          receiver = node.receiver
+          if receiver&.receiver
+            root_receiver(receiver)
+          else
+            receiver
+          end
+        end
+
         def format_message(method_name, current)
           format(MSG, prefer: "each_#{method_name[0..-2]}", current: current)
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/hash_except.rb 
new/lib/rubocop/cop/style/hash_except.rb
--- old/lib/rubocop/cop/style/hash_except.rb    2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/hash_except.rb    2023-12-11 11:24:09.000000000 
+0100
@@ -43,7 +43,7 @@
         # @!method bad_method_with_poro?(node)
         def_node_matcher :bad_method_with_poro?, <<~PATTERN
           (block
-            (send _ _)
+            (call _ _)
             (args
               $(arg _)
               (arg _))
@@ -86,6 +86,7 @@
             corrector.replace(range, preferred_method)
           end
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/style/map_compact_with_conditional_block.rb 
new/lib/rubocop/cop/style/map_compact_with_conditional_block.rb
--- old/lib/rubocop/cop/style/map_compact_with_conditional_block.rb     
2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/map_compact_with_conditional_block.rb     
2023-12-11 11:24:09.000000000 +0100
@@ -44,9 +44,9 @@
 
         # @!method map_and_compact?(node)
         def_node_matcher :map_and_compact?, <<~RUBY
-          (send
+          (call
             (block
-              (send _ :map)
+              (call _ :map)
               (args
                 $(arg _))
               {
@@ -85,6 +85,7 @@
             end
           end
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/map_to_hash.rb 
new/lib/rubocop/cop/style/map_to_hash.rb
--- old/lib/rubocop/cop/style/map_to_hash.rb    2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/map_to_hash.rb    2023-12-11 11:24:09.000000000 
+0100
@@ -68,6 +68,7 @@
           removal_range = range_between(to_h.loc.dot.begin_pos, 
to_h.loc.selector.end_pos)
 
           corrector.remove(range_with_surrounding_space(removal_range, side: 
:left))
+          corrector.replace(map.loc.dot, '.') if to_h.dot?
           corrector.replace(map.loc.selector, 'to_h')
         end
       end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb 
new/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb
--- 
old/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb 
    2023-12-01 13:49:31.000000000 +0100
+++ 
new/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb 
    2023-12-11 11:24:09.000000000 +0100
@@ -86,6 +86,7 @@
 
           def legitimate_call_with_parentheses?(node) # rubocop:disable 
Metrics/PerceivedComplexity
             call_in_literals?(node) ||
+              node.parent&.when_type? ||
               call_with_ambiguous_arguments?(node) ||
               call_in_logical_operators?(node) ||
               call_in_optional_arguments?(node) ||
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/lib/rubocop/cop/style/method_call_without_args_parentheses.rb 
new/lib/rubocop/cop/style/method_call_without_args_parentheses.rb
--- old/lib/rubocop/cop/style/method_call_without_args_parentheses.rb   
2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/method_call_without_args_parentheses.rb   
2023-12-11 11:24:09.000000000 +0100
@@ -8,6 +8,9 @@
       # This cop can be customized allowed methods with `AllowedMethods`.
       # By default, there are no methods to allowed.
       #
+      # NOTE: This cop allows the use of `it()` without arguments in blocks,
+      # as in `0.times { it() }`, following `Lint/ItWithoutArgumentsInBlock` 
cop.
+      #
       # @example
       #   # bad
       #   object.some_method()
@@ -30,15 +33,18 @@
 
         MSG = 'Do not use parentheses for method calls with no arguments.'
 
+        # rubocop:disable Metrics/CyclomaticComplexity
         def on_send(node)
           return unless !node.arguments? && node.parenthesized?
           return if ineligible_node?(node)
           return if default_argument?(node)
           return if allowed_method_name?(node.method_name)
           return if same_name_assignment?(node)
+          return if parenthesized_it_method_in_block?(node)
 
           register_offense(node)
         end
+        # rubocop:enable Metrics/CyclomaticComplexity
 
         private
 
@@ -71,6 +77,20 @@
           end
         end
 
+        # Respects `Lint/ItWithoutArgumentsInBlock` cop and the following Ruby 
3.3's warning:
+        #
+        # $ ruby -e '0.times { begin; it; end }'
+        # -e:1: warning: `it` calls without arguments will refer to the first 
block param in
+        # Ruby 3.4; use it() or self.it
+        #
+        def parenthesized_it_method_in_block?(node)
+          return false unless node.method?(:it)
+          return false unless (block_node = node.each_ancestor(:block).first)
+          return false unless 
block_node.arguments.empty_and_without_delimiters?
+
+          !node.receiver && node.arguments.empty? && !node.block_literal?
+        end
+
         def any_assignment?(node)
           node.each_ancestor(*AST::Node::ASSIGNMENTS).any? do |asgn_node|
             # `obj.method = value` parses as (send ... :method= ...), and will
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/next.rb 
new/lib/rubocop/cop/style/next.rb
--- old/lib/rubocop/cop/style/next.rb   2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/next.rb   2023-12-11 11:24:09.000000000 +0100
@@ -66,7 +66,7 @@
         end
 
         def on_block(node)
-          return unless node.send_node.send_type? && 
node.send_node.enumerator_method?
+          return unless node.send_node.call_type? && 
node.send_node.enumerator_method?
 
           check(node)
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/operator_method_call.rb 
new/lib/rubocop/cop/style/operator_method_call.rb
--- old/lib/rubocop/cop/style/operator_method_call.rb   2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/operator_method_call.rb   2023-12-11 
11:24:09.000000000 +0100
@@ -4,8 +4,8 @@
   module Cop
     module Style
       # Checks for redundant dot before operator method call.
-      # The target operator methods are `|`, `^`, `&`, `<=>`, `==`, `===`, 
`=~`, `>`, `>=`, `<`,
-      # `<=`, `<<`, `>>`, `+`, `-`, `*`, `/`, `%`, `**`, `~`, `!`, `!=`, and 
`!~`.
+      # The target operator methods are `|`, `^`, `&`, ``<=>``, `==`, `===`, 
`=~`, `>`, `>=`, `<`,
+      # ``<=``, `<<`, `>>`, `+`, `-`, `*`, `/`, `%`, `**`, `~`, `!`, `!=`, and 
`!~`.
       #
       # @example
       #
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_argument.rb 
new/lib/rubocop/cop/style/redundant_argument.rb
--- old/lib/rubocop/cop/style/redundant_argument.rb     2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/redundant_argument.rb     2023-12-11 
11:24:09.000000000 +0100
@@ -73,6 +73,7 @@
             corrector.remove(offense_range)
           end
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_fetch_block.rb 
new/lib/rubocop/cop/style/redundant_fetch_block.rb
--- old/lib/rubocop/cop/style/redundant_fetch_block.rb  2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/redundant_fetch_block.rb  2023-12-11 
11:24:09.000000000 +0100
@@ -47,7 +47,7 @@
         # @!method redundant_fetch_block_candidate?(node)
         def_node_matcher :redundant_fetch_block_candidate?, <<~PATTERN
           (block
-            $(send _ :fetch _)
+            $(call _ :fetch _)
             (args)
             ${nil? #basic_literal? #const_type?})
         PATTERN
@@ -61,10 +61,10 @@
             bad = build_bad_method(send, body)
 
             add_offense(range, message: format(MSG, good: good, bad: bad)) do 
|corrector|
-              receiver, _, key = send.children
+              _, _, key = send.children
               default_value = body ? body.source : 'nil'
 
-              corrector.replace(node, "#{receiver.source}.fetch(#{key.source}, 
#{default_value})")
+              corrector.replace(range, "fetch(#{key.source}, 
#{default_value})")
             end
           end
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_parentheses.rb 
new/lib/rubocop/cop/style/redundant_parentheses.rb
--- old/lib/rubocop/cop/style/redundant_parentheses.rb  2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/redundant_parentheses.rb  2023-12-11 
11:24:09.000000000 +0100
@@ -22,9 +22,6 @@
         # @!method square_brackets?(node)
         def_node_matcher :square_brackets?, '(send {(send _recv _msg) str 
array hash} :[] ...)'
 
-        # @!method range_end?(node)
-        def_node_matcher :range_end?, '^^{irange erange}'
-
         # @!method method_node_and_args(node)
         def_node_matcher :method_node_and_args, '$(call _recv _msg $...)'
 
@@ -64,7 +61,8 @@
           allowed_ancestor?(node) ||
             allowed_method_call?(node) ||
             allowed_multiple_expression?(node) ||
-            allowed_ternary?(node)
+            allowed_ternary?(node) ||
+            node.parent&.range_type?
         end
 
         def allowed_ancestor?(node)
@@ -144,7 +142,9 @@
           return 'a literal' if disallowed_literal?(begin_node, node)
           return 'a variable' if node.variable?
           return 'a constant' if node.const_type?
-          return 'an expression' if node.lambda_or_proc?
+          if node.lambda_or_proc? && (node.braces? || 
node.send_node.lambda_literal?)
+            return 'an expression'
+          end
           return 'an interpolated expression' if interpolation?(begin_node)
 
           return if begin_node.chained?
@@ -229,7 +229,6 @@
         def method_call_with_redundant_parentheses?(node)
           return false unless node.call_type?
           return false if node.prefix_not?
-          return false if range_end?(node)
 
           send_node, args = method_node_and_args(node)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_self.rb 
new/lib/rubocop/cop/style/redundant_self.rb
--- old/lib/rubocop/cop/style/redundant_self.rb 2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/redundant_self.rb 2023-12-11 11:24:09.000000000 
+0100
@@ -17,7 +17,8 @@
       # protected scope, you cannot send private messages this way.
       #
       # Note we allow uses of `self` with operators because it would be awkward
-      # otherwise.
+      # otherwise. Also allows the use of `self.it` without arguments in 
blocks,
+      # as in `0.times { self.it }`, following 
`Lint/ItWithoutArgumentsInBlock` cop.
       #
       # @example
       #
@@ -107,8 +108,8 @@
         def on_send(node)
           return unless node.self_receiver? && regular_method_call?(node)
           return if node.parent&.mlhs_type?
-
           return if allowed_send_node?(node)
+          return if it_method_in_block?(node)
 
           add_offense(node.receiver) do |corrector|
             corrector.remove(node.receiver)
@@ -155,6 +156,20 @@
             KERNEL_METHODS.include?(node.method_name)
         end
 
+        # Respects `Lint/ItWithoutArgumentsInBlock` cop and the following Ruby 
3.3's warning:
+        #
+        # $ ruby -e '0.times { begin; it; end }'
+        # -e:1: warning: `it` calls without arguments will refer to the first 
block param in
+        # Ruby 3.4; use it() or self.it
+        #
+        def it_method_in_block?(node)
+          return false unless node.method?(:it)
+          return false unless (block_node = node.each_ancestor(:block).first)
+          return false unless 
block_node.arguments.empty_and_without_delimiters?
+
+          node.arguments.empty? && !node.block_literal?
+        end
+
         def regular_method_call?(node)
           !(node.operator_method? ||
             KEYWORDS.include?(node.method_name) ||
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_sort.rb 
new/lib/rubocop/cop/style/redundant_sort.rb
--- old/lib/rubocop/cop/style/redundant_sort.rb 2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/redundant_sort.rb 2023-12-11 11:24:09.000000000 
+0100
@@ -16,7 +16,7 @@
       #   This cop is unsafe, because `sort...last` and `max` may not return 
the
       #   same element in all cases.
       #
-      #   In an enumerable where there are multiple elements where `a <=> b == 
0`,
+      #   In an enumerable where there are multiple elements where ``a <=> b 
== 0``,
       #   or where the transformation done by the `sort_by` block has the
       #   same result, `sort.last` and `max` (or `sort_by.last` and `max_by`)
       #   will return different elements. `sort.last` will return the last
@@ -87,15 +87,15 @@
         # @!method redundant_sort?(node)
         def_node_matcher :redundant_sort?, <<~MATCHER
           {
-            (send $(send _ $:sort) ${:last :first})
-            (send $(send _ $:sort) ${:[] :at :slice} {(int 0) (int -1)})
+            (call $(call _ $:sort) ${:last :first})
+            (call $(call _ $:sort) ${:[] :at :slice} {(int 0) (int -1)})
 
-            (send $(send _ $:sort_by _) ${:last :first})
+            (call $(call _ $:sort_by _) ${:last :first})
             (send $(send _ $:sort_by _) ${:[] :at :slice} {(int 0) (int -1)})
 
-            (send ({block numblock} $(send _ ${:sort_by :sort}) ...) ${:last 
:first})
-            (send
-              ({block numblock} $(send _ ${:sort_by :sort}) ...)
+            (call ({block numblock} $(call _ ${:sort_by :sort}) ...) ${:last 
:first})
+            (call
+              ({block numblock} $(call _ ${:sort_by :sort}) ...)
               ${:[] :at :slice} {(int 0) (int -1)}
             )
           }
@@ -108,6 +108,7 @@
 
           register_offense(ancestor, sort_node, sorter, accessor)
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/redundant_sort_by.rb 
new/lib/rubocop/cop/style/redundant_sort_by.rb
--- old/lib/rubocop/cop/style/redundant_sort_by.rb      2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/redundant_sort_by.rb      2023-12-11 
11:24:09.000000000 +0100
@@ -46,12 +46,12 @@
 
         # @!method redundant_sort_by_block(node)
         def_node_matcher :redundant_sort_by_block, <<~PATTERN
-          (block $(send _ :sort_by) (args (arg $_x)) (lvar _x))
+          (block $(call _ :sort_by) (args (arg $_x)) (lvar _x))
         PATTERN
 
         # @!method redundant_sort_by_numblock(node)
         def_node_matcher :redundant_sort_by_numblock, <<~PATTERN
-          (numblock $(send _ :sort_by) 1 (lvar :_1))
+          (numblock $(call _ :sort_by) 1 (lvar :_1))
         PATTERN
 
         def sort_by_range(send, node)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/sample.rb 
new/lib/rubocop/cop/style/sample.rb
--- old/lib/rubocop/cop/style/sample.rb 2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/sample.rb 2023-12-11 11:24:09.000000000 +0100
@@ -35,7 +35,7 @@
 
         # @!method sample_candidate?(node)
         def_node_matcher :sample_candidate?, <<~PATTERN
-          (send $(send _ :shuffle $...) ${:#{RESTRICT_ON_SEND.join(' :')}} 
$...)
+          (call $(call _ :shuffle $...) ${:#{RESTRICT_ON_SEND.join(' :')}} 
$...)
         PATTERN
 
         def on_send(node)
@@ -52,6 +52,7 @@
             end
           end
         end
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/select_by_regexp.rb 
new/lib/rubocop/cop/style/select_by_regexp.rb
--- old/lib/rubocop/cop/style/select_by_regexp.rb       2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/select_by_regexp.rb       2023-12-11 
11:24:09.000000000 +0100
@@ -55,8 +55,8 @@
         # @!method regexp_match?(node)
         def_node_matcher :regexp_match?, <<~PATTERN
           {
-            (block send (args (arg $_)) ${(send _ %REGEXP_METHODS _) 
match-with-lvasgn})
-            (numblock send $1 ${(send _ %REGEXP_METHODS _) match-with-lvasgn})
+            (block call (args (arg $_)) ${(send _ %REGEXP_METHODS _) 
match-with-lvasgn})
+            (numblock call $1 ${(send _ %REGEXP_METHODS _) match-with-lvasgn})
           }
         PATTERN
 
@@ -64,9 +64,9 @@
         # @!method creates_hash?(node)
         def_node_matcher :creates_hash?, <<~PATTERN
           {
-            (send (const _ :Hash) {:new :[]} ...)
-            (block (send (const _ :Hash) :new ...) ...)
-            (send _ { :to_h :to_hash } ...)
+            (call (const _ :Hash) {:new :[]} ...)
+            (block (call (const _ :Hash) :new ...) ...)
+            (call _ { :to_h :to_hash } ...)
           }
         PATTERN
 
@@ -100,6 +100,7 @@
           register_offense(node, block_node, regexp, replacement)
         end
         # rubocop:enable Metrics/CyclomaticComplexity, 
Metrics/PerceivedComplexity
+        alias on_csend on_send
 
         private
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/single_argument_dig.rb 
new/lib/rubocop/cop/style/single_argument_dig.rb
--- old/lib/rubocop/cop/style/single_argument_dig.rb    2023-12-01 
13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/single_argument_dig.rb    2023-12-11 
11:24:09.000000000 +0100
@@ -3,8 +3,11 @@
 module RuboCop
   module Cop
     module Style
-      # Sometimes using dig method ends up with just a single
-      # argument. In such cases, dig should be replaced with [].
+      # Sometimes using `dig` method ends up with just a single
+      # argument. In such cases, dig should be replaced with `[]`.
+      #
+      # Since replacing `hash&.dig(:key)` with `hash[:key]` could potentially 
lead to error,
+      # calls to the `dig` method using safe navigation will be ignored.
       #
       # @safety
       #   This cop is unsafe because it cannot be guaranteed that the receiver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/string_chars.rb 
new/lib/rubocop/cop/style/string_chars.rb
--- old/lib/rubocop/cop/style/string_chars.rb   2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/string_chars.rb   2023-12-11 11:24:09.000000000 
+0100
@@ -35,6 +35,7 @@
             corrector.replace(range, 'chars')
           end
         end
+        alias on_csend on_send
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/strip.rb 
new/lib/rubocop/cop/style/strip.rb
--- old/lib/rubocop/cop/style/strip.rb  2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/cop/style/strip.rb  2023-12-11 11:24:09.000000000 +0100
@@ -22,20 +22,23 @@
 
         # @!method lstrip_rstrip(node)
         def_node_matcher :lstrip_rstrip, <<~PATTERN
-          {(send $(send _ $:rstrip) $:lstrip)
-           (send $(send _ $:lstrip) $:rstrip)}
+          {
+            (call $(call _ :rstrip) :lstrip)
+            (call $(call _ :lstrip) :rstrip)
+          }
         PATTERN
 
         def on_send(node)
-          lstrip_rstrip(node) do |first_send, method_one, method_two|
+          lstrip_rstrip(node) do |first_send|
             range = range_between(first_send.loc.selector.begin_pos, 
node.source_range.end_pos)
-            message = format(MSG, methods: "#{method_one}.#{method_two}")
+            message = format(MSG, methods: range.source)
 
             add_offense(range, message: message) do |corrector|
               corrector.replace(range, 'strip')
             end
           end
         end
+        alias on_csend on_send
       end
     end
   end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/cop/style/unpack_first.rb 
new/lib/rubocop/cop/style/unpack_first.rb
--- old/lib/rubocop/cop/style/unpack_first.rb   2023-12-01 13:49:31.000000000 
+0100
+++ new/lib/rubocop/cop/style/unpack_first.rb   2023-12-11 11:24:09.000000000 
+0100
@@ -23,38 +23,35 @@
 
         minimum_target_ruby_version 2.4
 
-        MSG = 'Use `%<receiver>s.unpack1(%<format>s)` instead of ' \
-              '`%<receiver>s.unpack(%<format>s)%<method>s`.'
+        MSG = 'Use `unpack1(%<format>s)` instead of `%<current>s`.'
         RESTRICT_ON_SEND = %i[first [] slice at].freeze
 
         # @!method unpack_and_first_element?(node)
         def_node_matcher :unpack_and_first_element?, <<~PATTERN
           {
-            (send $(send (...) :unpack $(...)) :first)
-            (send $(send (...) :unpack $(...)) {:[] :slice :at} (int 0))
+            (call $(call (...) :unpack $(...)) :first)
+            (call $(call (...) :unpack $(...)) {:[] :slice :at} (int 0))
           }
         PATTERN
 
         def on_send(node)
           unpack_and_first_element?(node) do |unpack_call, unpack_arg|
-            range = first_element_range(node, unpack_call)
-            message = format(MSG,
-                             receiver: unpack_call.receiver.source,
-                             format: unpack_arg.source,
-                             method: range.source)
-            add_offense(node, message: message) do |corrector|
-              corrector.remove(first_element_range(node, unpack_call))
+            first_element_range = first_element_range(node, unpack_call)
+            offense_range = 
unpack_call.loc.selector.join(node.source_range.end)
+            message = format(MSG, format: unpack_arg.source, current: 
offense_range.source)
+
+            add_offense(offense_range, message: message) do |corrector|
+              corrector.remove(first_element_range)
               corrector.replace(unpack_call.loc.selector, 'unpack1')
             end
           end
         end
+        alias on_csend on_send
 
         private
 
         def first_element_range(node, unpack_call)
-          Parser::Source::Range.new(node.source_range.source_buffer,
-                                    unpack_call.source_range.end_pos,
-                                    node.source_range.end_pos)
+          unpack_call.source_range.end.join(node.source_range.end)
         end
       end
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop/version.rb new/lib/rubocop/version.rb
--- old/lib/rubocop/version.rb  2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop/version.rb  2023-12-11 11:24:09.000000000 +0100
@@ -3,7 +3,7 @@
 module RuboCop
   # This module holds the RuboCop version information.
   module Version
-    STRING = '1.58.0'
+    STRING = '1.59.0'
 
     MSG = '%<version>s (using Parser %<parser_version>s, ' \
           'rubocop-ast %<rubocop_ast_version>s, ' \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/rubocop.rb new/lib/rubocop.rb
--- old/lib/rubocop.rb  2023-12-01 13:49:31.000000000 +0100
+++ new/lib/rubocop.rb  2023-12-11 11:24:09.000000000 +0100
@@ -332,6 +332,7 @@
 require_relative 'rubocop/cop/lint/ineffective_access_modifier'
 require_relative 'rubocop/cop/lint/inherit_exception'
 require_relative 'rubocop/cop/lint/interpolation_check'
+require_relative 'rubocop/cop/lint/it_without_arguments_in_block'
 require_relative 'rubocop/cop/lint/lambda_without_literal_block'
 require_relative 'rubocop/cop/lint/literal_as_condition'
 require_relative 'rubocop/cop/lint/literal_assignment_in_condition'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2023-12-01 13:49:31.000000000 +0100
+++ new/metadata        2023-12-11 11:24:09.000000000 +0100
@@ -1,16 +1,16 @@
 --- !ruby/object:Gem::Specification
 name: rubocop
 version: !ruby/object:Gem::Version
-  version: 1.58.0
+  version: 1.59.0
 platform: ruby
 authors:
 - Bozhidar Batsov
 - Jonas Arvidsson
 - Yuji Nakayama
-autorequire: 
+autorequire:
 bindir: exe
 cert_chain: []
-date: 2023-12-01 00:00:00.000000000 Z
+date: 2023-12-11 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
   name: json
@@ -467,6 +467,7 @@
 - lib/rubocop/cop/lint/ineffective_access_modifier.rb
 - lib/rubocop/cop/lint/inherit_exception.rb
 - lib/rubocop/cop/lint/interpolation_check.rb
+- lib/rubocop/cop/lint/it_without_arguments_in_block.rb
 - lib/rubocop/cop/lint/lambda_without_literal_block.rb
 - lib/rubocop/cop/lint/literal_as_condition.rb
 - lib/rubocop/cop/lint/literal_assignment_in_condition.rb
@@ -1029,10 +1030,10 @@
   homepage_uri: https://rubocop.org/
   changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
   source_code_uri: https://github.com/rubocop/rubocop/
-  documentation_uri: https://docs.rubocop.org/rubocop/1.58/
+  documentation_uri: https://docs.rubocop.org/rubocop/1.59/
   bug_tracker_uri: https://github.com/rubocop/rubocop/issues
   rubygems_mfa_required: 'true'
-post_install_message: 
+post_install_message:
 rdoc_options: []
 require_paths:
 - lib
@@ -1047,8 +1048,8 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubygems_version: 3.4.22
-signing_key: 
+rubygems_version: 3.3.7
+signing_key:
 specification_version: 4
 summary: Automatic Ruby code style checking tool.
 test_files: []

Reply via email to