From: alxtskrnk@... Date: 2014-12-18T07:41:38+00:00 Subject: [ruby-core:66939] [ruby-trunk - Bug #10450] multiple assignment in conditional Issue #10450 has been updated by bug hit. Martin D��rst wrote: > bug hit wrote: > > Yusuke Endoh wrote: > > > I think that the restriction is no longer meaningful, but it does not mean that this is a bug. Whatever the reason is, the behavior has been the spec. It is not harmful. It is trivial to work around. So I consider this ticket as a feature request. > > > > > > I can reopen this ticket, but it has many noises and too long. I also recommend you to open a new ticket to feature request tracker. > > > If you can reopen, then please do, I think it's better not to have two tickets for the same issue. I disagree that this is a feature. > > It would be helpful if you could defer the triage into bugs and features to people such as Yusuke who have a lot of experience with how Ruby development works. Also, while it's better to not have two tickets for the same issue, it's better to have a new ticket because, as we had to find out, the current ticket mixes up two issues (allowing multiple assignment in conditions and removing parentheses), is confusing, and has accumulated a lot of dust. Good point about the dust. There are three entries in this bug that are essential, my initial report, Alex Boyd's patch, and Yusuke Endoh's historical explanation. All of your posts are indeed dust that can and should be removed, try to resist the urge to dust this bug any further. There are not two issues here, just one, multiple assignment in conditionals is not possible. In the first post I provided examples to show that the problem is present with and without parens (with different errors), that's a good thing, makes the bug report more thorough. What horror, the confusion of absorbing two related facts instead of one, why, it's enough make your brain seize up. ---------------------------------------- Bug #10450: multiple assignment in conditional https://bugs.ruby-lang.org/issues/10450#change-50483 * Author: bug hit * Status: Rejected * Priority: Normal * Assignee: * Category: * Target version: * ruby -v: ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- multiple assignment is an expression whose value can be truthy (array) or falsy (nil, false), so why is there a restriction on its use in conditionals? A warning perhaps is justified, but a syntax error, why? irb(main):001:0> if a, b = nil then 1 else 0 end SyntaxError: (irb):1: syntax error, unexpected ',', expecting keyword_then or ';' or '\n' if a, b = nil then 1 else 0 end ^ (irb):1: syntax error, unexpected keyword_then, expecting end-of-input if a, b = nil then 1 else 0 end ^ from /home/alex/.rbenv/versions/2.1.4/bin/irb:11:in `
' irb(main):002:0> if (a, b = nil) then 1 else 0 end SyntaxError: (irb):2: multiple assignment in conditional from /home/alex/.rbenv/versions/2.1.4/bin/irb:11:in `
' irb(main):003:0> (a, b = nil) ? 1 : 0 SyntaxError: (irb):3: multiple assignment in conditional from /home/alex/.rbenv/versions/2.1.4/bin/irb:11:in `
' irb(main):004:0> (a, b = nil) => nil -- https://bugs.ruby-lang.org/