Skip to content

Commit

Permalink
[Fix #6755] Prevent Style/TrailingCommaInArgument from breaking when …
Browse files Browse the repository at this point in the history
…a safe method call is chained on the offending method

This cop would error out on code like:

```
foo.bar(
  baz: 1,
)&.fetch(:qux)
```

This was happening because the cop wasn't taking `csend` (safe navigation)
node types into consideration.
  • Loading branch information
Drenmi committed Feb 11, 2019
1 parent eb1caef commit 00f5c5c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Expand Up @@ -4,6 +4,10 @@

## 0.64.0 (2019-02-10)

### Bug fixes

* [#6755](https://github.com/rubocop-hq/rubocop/issues/6755): Prevent `Style/TrailingCommaInArgument` from breaking when a safe method call is chained on the offending method. ([@drenmi][])

### New features

* [#6704](https://github.com/rubocop-hq/rubocop/pull/6704): Add new `Rails/ReflectionClassName` cop. ([@Bhacaz][])
Expand Down
2 changes: 1 addition & 1 deletion lib/rubocop/cop/mixin/trailing_comma.rb
Expand Up @@ -104,7 +104,7 @@ def allowed_multiline_argument?(node)
end

def elements(node)
return node.children unless node.send_type?
return node.children unless %i[csend send].include?(node.type)

node.arguments.flat_map do |argument|
# For each argument, if it is a multi-line hash without braces,
Expand Down
17 changes: 17 additions & 0 deletions spec/rubocop/cop/style/trailing_comma_in_arguments_spec.rb
Expand Up @@ -416,6 +416,23 @@
)
RUBY
end

it 'does not break when a method call is chaned on the offending one' do
expect_no_offenses(<<-RUBY.strip_indent)
foo.bar(
baz: 1,
).fetch(:qux)
RUBY
end

it 'does not break when a safe method call is chained on the ' \
'offending one', :ruby23 do
expect_no_offenses(<<-RUBY.strip_indent)
foo.bar(
baz: 1,
)&.fetch(:qux)
RUBY
end
end

context 'when EnforcedStyleForMultiline is consistent_comma' do
Expand Down

0 comments on commit 00f5c5c

Please sign in to comment.