From: alxtskrnk@... Date: 2014-12-16T15:50:06+00:00 Subject: [ruby-core:66875] [ruby-trunk - Bug #10450] multiple assignment in conditional Issue #10450 has been updated by bug hit. Martin D��rst wrote: > bug hit wrote: > > bug hit wrote: > > > Yukihiro Matsumoto wrote: > > > > > > > > But I am afraid it's meaningless, since multiple assignment always return an array as its value. > > > > > > > > > > Since the rejection reason is invalid, why would you not reopen? Is there's some other reason? > > > > Can some one on the ruby core give a reason for this? Bugs should not be rejected with invalid excuses. > > Yukihiro Matsumoto also wrote: > > It's a limitation of LALR syntax defined by yacc. > > Bugs have to be rejected if there's a valid reason for rejection, even if another reason also was given that may or may not be valid. > > Maybe if you can show how to implement what you want (i.e. how to get around the LALR limitation), then you can open another issue. You also don't read before posting, ok let me redigest for you. The LALR limitation is about use without parens, that's not what this bug is about. If it worked with parens I would not have even bothered filing it. Alex Boyd already posted a patch that lifts the unreasonable restriction. As of now, no legitimate (non false) reason has been given for rejection. ---------------------------------------- Bug #10450: multiple assignment in conditional https://bugs.ruby-lang.org/issues/10450#change-50429 * 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/