Issue #16389 has been updated by nobu (Nobuyoshi Nakada).
codinganarchy (Matthew Tanous) wrote:
> Just to clarify, if you don't mind, is this also due to the difference between `.>` (a method) and `>` (an operator)? I ask as `foo unless (@bar&.nil? && @baz > 15)` does not result in a syntax error, though using `&& @baz.> 15` will.
Yes, this is an issue of syntax precedence.
As comparison operators have higher precedence than logical operators, `nil && bar > 15` is interpreted as `nil && (bar > 15)`.
OTOH, a method call without parentheses has lower precedence, because its arguments may contain such logical expressions, so the combination of them, e.g, `nil && p a && b`, is ambiguous/confusing.
----------------------------------------
Bug #16389: Unexpected tINTEGER in conditional expression
https://bugs.ruby-lang.org/issues/16389#change-82975
* Author: codinganarchy (Matthew Tanous)
* Status: Rejected
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.6.4p104 (2019-08-28 revision 67798) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN
----------------------------------------
I'm not sure that this is a bug, or simply an unexpected result of operator precedence, but I am seeing a result that appears to me to be an issue.
When putting a conditional expression after a command call using `unless`, I am seeing a syntax error when I believe the syntax should be valid. In particular:
```ruby
def foo
puts "This method just has to exist"
end
foo unless (@bar&.nil? && @baz&.> 15)
```
This produces`syntax error, unexpected tINTEGER, expecting ')'` following the `&.>` safe navigation. I would not expect a syntax error here.
This seems a strange result to me, as `foo unless (@bar&.nil? and @baz&.> 15)` appears to work as expected, producing no syntax error.
Please let me know if I am missing something in either my expectation or the issue report. Thanks!
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.