diff --git a/changelog/fix_fix_crash_in_styleconditionalassignment.md b/changelog/fix_fix_crash_in_styleconditionalassignment.md new file mode 100644 index 00000000000..5621f7cc3f5 --- /dev/null +++ b/changelog/fix_fix_crash_in_styleconditionalassignment.md @@ -0,0 +1 @@ +* [#10737](https://github.com/rubocop/rubocop/issues/10737): Fix crash in `Style/ConditionalAssignment` with `EnforcedStyle: assign_inside_condition` when op-assigning a variable inside a `resbody`. ([@dvandersluis][]) diff --git a/lib/rubocop/cop/style/conditional_assignment.rb b/lib/rubocop/cop/style/conditional_assignment.rb index 96a421a79da..4456967aef8 100644 --- a/lib/rubocop/cop/style/conditional_assignment.rb +++ b/lib/rubocop/cop/style/conditional_assignment.rb @@ -237,6 +237,7 @@ class ConditionalAssignment < Base ASSIGNMENT_TYPES.each do |type| define_method "on_#{type}" do |node| return if part_of_ignored_node?(node) + return if node.parent&.shorthand_asgn? check_assignment_to_condition(node) end diff --git a/spec/rubocop/cop/style/conditional_assignment_assign_in_condition_spec.rb b/spec/rubocop/cop/style/conditional_assignment_assign_in_condition_spec.rb index 6c0fe9ad8d3..b103a1b7d41 100644 --- a/spec/rubocop/cop/style/conditional_assignment_assign_in_condition_spec.rb +++ b/spec/rubocop/cop/style/conditional_assignment_assign_in_condition_spec.rb @@ -242,6 +242,16 @@ end RUBY end + + it 'does not crash when used inside rescue' do + expect_no_offenses(<<~RUBY) + begin + bar #{assignment} 2 + rescue + bar #{assignment} 1 + end + RUBY + end end shared_examples 'multiline all variable types offense' do |variable|