Issue #11143 has been updated by Nobuyoshi Nakada.


bug hit wrote:
> Nobuyoshi Nakada wrote:
> > Why do you need such assignment?
> 
> What does my "need" have to do with whether something should be a syntax error or not?

I wanted to know the use-case.

> Just about everything in ruby is an expression and all expressions can potentially fail to produce a value (due to some jump: raise, throw, return, etc).  That does not make such expressions syntactically invalid (e.g. `a = (1; return; 2)`), except for the if?  Why?

Thank you, it's a bug.
That `return` should be invalid too.


----------------------------------------
Bug #11143: it should always be possible to return from an if
https://bugs.ruby-lang.org/issues/11143#change-52483

* Author: bug hit
* Status: Rejected
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
```
irb(main):001:0> def foo; a = if true then return end end
SyntaxError: (irb):1: void value expression
```

it should not matter that you are not producing a value for the if expression, since you are leaving the method immediately.  This should also apply to other jumps.



-- 
https://bugs.ruby-lang.org/