[ruby-core:120054] [Ruby master Feature#20922] Should not we omit parentheses in assert calls?
From:
"byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Date:
2024-11-29 11:47:13 UTC
List:
ruby-core #120054
Issue #20922 has been updated by byroot (Jean Boussier).
I generally agree, and this change would be welcome, but there's still a common case that is an error:
```ruby
assert_equal {}, something
```
----------------------------------------
Feature #20922: Should not we omit parentheses in assert calls?
https://bugs.ruby-lang.org/issues/20922#change-110789
* Author: mame (Yusuke Endoh)
* Status: Open
----------------------------------------
I often see the style of omitting parentheses in assert calls, but it leads to annoying warnings in the following case:
```
assert_equal -1, val #=> warning: ambiguous first argument; put parentheses or a space even after `-` operator
assert_match /foo/, str #=> warning: ambiguous `/`; wrap regexp in parentheses or add a space after `/` operator
```
To deal with this warning, it is necessary to add parentheses only to *some* assert calls.
```
assert_equal 1, one
assert_equal 0, zero
assert_equal(-1, minus_one)
```
Obviously, this is not very cool.
I feel that by these warnings, Ruby says "we should not omit parentheses in assert calls". Is this what matz intended?
If it is the intent, I would like to add parentheses on all assert calls in tests of Ruby and default gems.
If it is not the intent, why don't we remove these warnings?
Note that, as far as I recall, I encountered this problem only with `assert_equal` and `assert_match`.
I don't write parentheses in `p`, `puts`, `attr_reader`, `include`, etc., but all of them rarely accept `-1` and `//` literally as the first argument in real code.
As a milder approach, I came up with an idea to stop the warning only when the method name starts with "assert". It is very ad-hoc, though.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/