Issue #17925 has been updated by nobu (Nobuyoshi Nakada).
I thought it a trade-off.
To allow the statement, one-line pattern matching is not allowed there.
But it returns `true`/`false` only and may be useless for `case`.
----------------------------------------
Bug #17925: Pattern matching syntax using semicolon one-line
https://bugs.ruby-lang.org/issues/17925#change-104322
* Author: koic (Koichi ITO)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.1.0dev (2021-05-28T16:34:27Z master e56ba6231f) [x86_64-darwin19]
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
## Summary
There are the following differences between `case ... when` and` case ... in`. Is this an
expected behavior?
```console
% ruby -v
ruby 3.1.0dev (2021-05-28T16:34:27Z master e56ba6231f) [x86_64-darwin19]
% ruby -ce 'case expression when 42; end'
Syntax OK
% ruby -ce 'case expression in 42; end'
-e:1: warning: One-line pattern matching is experimental, and the behavior may change in
future versions of Ruby!
-e:1: syntax error, unexpected `end', expecting `when'
case expression in 42; end
```
So, I have two concerns.
- Since the pattern matching syntax is different from `case ... when`, can't user
write semicolon one-line `case ... in` in the same semicolon one-line as `case ...
when`?
- Does `case expression in 42; end` display an experimental warning of one-line pattern
matching. Right?
This is reproduced in Ruby 3.1.0-dev and Ruby 3.0.1.
## Additional Information
NOTE 1: I understand that only syntax that doesn't use `case` and `end` is
experimental one-line pattern matching syntax.
```
% ruby -ce 'expression in 42'
-e:1: warning: One-line pattern matching is experimental, and the behavior may change in
future versions of Ruby!
Syntax OK
```
NOTE 2: The syntax is OK if a semicolon is used between `expression` and `in`. But `case
... when` is a valid syntax to omit.
```
% ruby -e ruby -ce 'case expression; in 42; end'
Syntax OK
```
--
https://bugs.ruby-lang.org/