Skip to content

Commit

Permalink
Merge pull request #7718 from koic/fix_an_infinite_loop_error_for_red…
Browse files Browse the repository at this point in the history
…undant_parentheses

[Fix #7716] Fix an infinite loop error for `Style/TernaryParentheses`
  • Loading branch information
koic committed Feb 16, 2020
2 parents f857af5 + 78d3283 commit 1e905b1
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 8 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -23,6 +23,7 @@
* [#7647](https://github.com/rubocop-hq/rubocop/issues/7647): Fix an `undefined method on_numblock` error when using Ruby 2.7's numbered parameters. ([@hanachin][])
* [#7675](https://github.com/rubocop-hq/rubocop/issues/7675): Fix a false negative for `Layout/SpaceBeforeFirstArg` when a vertical argument positions are aligned. ([@koic][])
* [#7688](https://github.com/rubocop-hq/rubocop/issues/7688): Fix a bug in `Style/MethodCallWithArgsParentheses` that made `--auto-gen-config` crash. ([@buehmann][])
* [#7203](https://github.com/rubocop-hq/rubocop/issues/7203): Fix an infinite loop error for `Style/TernaryParentheses` with `Style/RedundantParentheses` when using `EnforcedStyle: require_parentheses_when_complex`. ([@koic][])

### Changes

Expand Down
2 changes: 1 addition & 1 deletion lib/rubocop/cop/style/ternary_parentheses.rb
Expand Up @@ -162,7 +162,7 @@ def parenthesized?(node)
# `RedundantParentheses` cop is enabled, it will cause an infinite loop
# as they compete to add and remove the parentheses respectively.
def infinite_loop?
require_parentheses? &&
(require_parentheses? || require_parentheses_when_complex?) &&
redundant_parentheses_enabled?
end

Expand Down
21 changes: 14 additions & 7 deletions spec/rubocop/cop/style/ternary_parentheses_spec.rb
Expand Up @@ -414,14 +414,21 @@

context 'when `RedundantParenthesis` would cause an infinite loop' do
let(:redundant_parens_enabled) { true }
let(:cop_config) do
{
'EnforcedStyle' => 'require_parentheses',
'SupportedStyles' => %w[require_parentheses require_no_parentheses]
}

context 'when `EnforcedStyle: require_parentheses`' do
let(:cop_config) do
{ 'EnforcedStyle' => 'require_parentheses' }
end

it_behaves_like 'code without offense', 'foo = bar? ? a : b'
end

it_behaves_like 'code without offense',
'foo = bar? ? a : b'
context 'when `EnforcedStyle: require_parentheses_when_complex`' do
let(:cop_config) do
{ 'EnforcedStyle' => 'require_parentheses_when_complex' }
end

it_behaves_like 'code without offense', '!condition.nil? ? foo : bar'
end
end
end

0 comments on commit 1e905b1

Please sign in to comment.