From: tom.enebo@... Date: 2015-01-06T16:06:37+00:00 Subject: [ruby-core:67368] [ruby-trunk - Bug #10450] multiple assignment in conditional Issue #10450 has been updated by Thomas Enebo. We just got a report on JRuby that we DO NOT error if masgn is in a conditional: https://github.com/jruby/jruby/issues/2433#issuecomment-68882716 My main two takeaways: 1. I don't think many people ever try to do this since it took so long for this to be reported in our issue tracker. 2. There are probably lots of weird things you can currently put into an if that are not guarded like this. ---------------------------------------- Bug #10450: multiple assignment in conditional https://bugs.ruby-lang.org/issues/10450#change-50816 * 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/