Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Fix rubocop#7716] Fix an infinite loop error for `Style/TernaryParen…
…theses` Fix rubocop#7716. This PR fixes an infinite loop error for `Style/TernaryParentheses` with `Style/RedundantParentheses` when using `EnforcedStyle: require_parentheses_when_complex`. ```ruby # example.rb !foo.nil? ? 1 : 2 ``` ```yaml # .rubocop.yml Style/TernaryParentheses: EnforcedStyle: require_parentheses_when_complex ``` First, auto-corrected by `Style/TernaryParentheses` (`EnforcedStyle: require_parentheses_when_complex`). ```console % bundle exec rubocop -a --only Style/TernaryParentheses Offenses: example.rb:2:1: C: [Corrected] Style/TernaryParentheses: Use parentheses for ternary expressions with complex conditions. !foo.nil? ? 1 : 2 ^^^^^^^^^^^^^^^^^ 1 file inspected, 1 offense detected, 1 offense corrected ``` ```diff % git diff example.rb diff --git a/7716/example.rb b/7716/example.rb index ae08c67..31212d8 100644 --- a/7716/example.rb +++ b/7716/example.rb @@ -1,2 +1,2 @@ # example.rb -!foo.nil? ? 1 : 2 +(!foo.nil?) ? 1 : 2 ``` Next, auto-corrected by `Style/RedundantParentheses`. ```console % bundle exec rubocop -a --only Style/RedundantParentheses Offenses: example.rb:2:1: C: [Corrected] Style/RedundantParentheses: Don't use parentheses around an unary operation. (!foo.nil?) ? 1 : 2 ^^^^^^^^^^^ 1 file inspected, 1 offense detected, 1 offense corrected ``` This will return to the original code. ```diff % git diff example.rb diff --git a/7716/example.rb b/7716/example.rb index 31212d8..ae08c67 100644 --- a/7716/example.rb +++ b/7716/example.rb @@ -1,2 +1,2 @@ # example.rb -(!foo.nil?) ? 1 : 2 +!foo.nil? ? 1 : 2 ``` That caused the infinite loop in `Style/TernaryParentheses` (`EnforcedStyle: require_parentheses_when_complex`) and `Style/RedundantParentheses`. With this PR, `Style/TernaryParentheses` cop makes aware of `Style/RedundantParentheses` cop when setting `EnforcedStyle: require_parentheses_when_complex`. This does the same thing as `EnforcedStyle: require_parentheses` for infinite loop error.
- Loading branch information