[ruby-core:96115] [Ruby master Bug#16389] Unexpected tINTEGER in conditional expression
From:
nobu@...
Date:
2019-12-05 00:10:42 UTC
List:
ruby-core #96115
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:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>