-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Fix #3511] Style/TernaryParentheses false positive #3513
Conversation
The fix looks good, but it also needs a changelog entry. |
done |
@@ -1,6 +1,7 @@ | |||
# Change log | |||
|
|||
## master (unreleased) | |||
[#3513](https://github.com/bbatsov/rubocop/pull/3513): Fix false positive in `Style/TernaryParentheses` for a ternary with ranges. ([@dreyks][]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See the changelog for older releases. There should be a Bugs fixed
section here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, fixed this.
@@ -91,7 +91,7 @@ def redundant_parentheses_enabled? | |||
end | |||
|
|||
def parenthesized?(node) | |||
node.source =~ /^\(.*\)$/ | |||
node.type == :begin |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a predicate method on Node
for this:
node.begin_type?
Also, I'm not entirely sure why this works. 😅 With the changed implementation, does the method name still make sense?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm new to this whole AST thing but empirically I realized that a braced expression has a :begin
root node, while non-braced has anything but it... I will change to begin_type?
And all the previous tests pass, so it seems that I didn't break anything >.<
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay. Makes sense to me. Nice job fixing this. 😀
💚 |
There's one small caveat. Something like |
I've just checked |
I've added a couple of tests. What else should I check for? |
Doesn't look like a |
|
||
context 'with several expressions on one line' do | ||
it_behaves_like 'code without offense', | ||
'foo; bar ? a: b' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a :
Anyways, I recalled that in the context of a |
'(foo..bar).include?(baz) ? a : b' | ||
end | ||
|
||
context 'with several expressions on one line' do |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Guess I misled you and we can drop this example.
💚 |
👍 |
Great to see this fixed, just ran into this with this nice line: "cellar" => (cellar = bottle_spec.cellar).is_a?(Symbol) ? cellar.inspect : cellar, |
* bbatsov/master: (80 commits) [Fix rubocop#3540] Make `Style/GuardClause` register offense for instance & singleton methods [Fix rubocop#3436] issue related to Rails/SaveBang when returning non-bang call from the parent method Allow `#to_yml` to produce single-quoted strings Add support for StyleGuideBaseURL and update rules Add spec for the existing style guide URL implementation Fix the changelog Edited regular expression for normal case to fix issues rubocop#3514 and rubocop#3516 (rubocop#3524) Add a rake task for generation a new cop (rubocop#3533) [Fix rubocop#3510] Various bug fixes for SafeNavigation (rubocop#3517) [Fix rubocop#3512] Change error message of `Lint/UnneededSplatExpansion` for array (rubocop#3526) Fix false positive in `Lint/AssignmentInCondition` (rubocop#3520) (rubocop#3529) Rename a mismatched filename (rubocop#3523) Fix a broken changelog entry [Fix rubocop#3511] Style/TernaryParentheses false positive (rubocop#3513) Fix the release notes for 0.43 Cut 0.43.0 [Fix rubocop#3462] Don't flag single-line methods Fix false negatives in `Rails/NotNullColumn` cop (rubocop#3508) Remove unused doubled methods (rubocop#3509) [Fix rubocop#3485] Make OneLineConditional cop ignore empty else (rubocop#3487) ...
Fix false positive for a ternary with ranges
Fixes #3511
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).and description in grammatically correct, complete sentences.