Just in private:

- Adding some tests to the patch is a good idea.

- If there's no more action, I'd wait for the next call
   for proposals for features in Ruby 2.3,
   then produce a slide summarizing your proposal
   (see e.g. Normalization.pdf on
    https://bugs.ruby-lang.org/issues/10084).
   Such calls normally occur somewhere in the middle
   of the year.

Regards,   Martin.

On 2014/12/30 09:04, recursive.madman / gmx.de wrote:
> Issue #10617 has been updated by Recursive Madman.
>
>
> I'm not sure if it's decent to push this - I understand 2.2.0 release is taking up a lot of time on the core devs side and holidays are also in progress in some parts of the world, so no hurry here.
>
> Anyway, I feel I should ask:
> * are there any known reasons not to accept this patch?
> * does the issue need more clarification? #10450 has more information (I know that issue's discussion got a bit heated and confusing, which is why I opened this one to limit it to the actual change that was requested)
>
> If there's anything more I should do to make this go through (maybe write a test or something?), I'm willing to do.
>
> Ahoy.
>
> ----------------------------------------
> Feature #10617: Change multiple assignment in conditional from parse error to warning
> https://bugs.ruby-lang.org/issues/10617#change-50689
>
> * Author: Recursive Madman
> * Status: Open
> * Priority: Normal
> * Assignee:
> * Category:
> * Target version:
> ----------------------------------------
> There is currently an inconsistency between regular and multiple assignment in conditionals.
> Regular assignment causes a **warning**, multiple assignment causes a **parse error**.
>
> The historical reason for this is that in 1.8 multiple assignment would always return an Array, but since 1.9 it returns whatever the RHS evaluates to.
>
> **Examples:**
>
> ```ruby
> a, b = nil  #=> nil
> a, b = []   #=> []     (but a and b are both nil)
> a, b = 1,2  #=> [1, 2]
> ```
>
> Since multiple assignment behavior has changed, it makes sense to remove the (artificial) parse error for multiple assignments.
>
> That makes it possible to test the return value of a method used for multiple assignment without having to use a temporary variable.
>
> **Example:**
>
> ```ruby
> # CURRENTLY WORKING CODE:
> tmp = some_method_returning_array_or_nil
> a, b = tmp
> if tmp
>    # method returned an array (possibly empty)
> else
>    # method returned nil.
> end
>
> # PROPOSED WORKING CODE:
> if(a, b = some_method_returning_array_or_nil)
>    # method returned an array (possibly empty)
> else
>    # method returned nil
> end
> ```
>
> (the parenthesis are needed due to LALR limitations, as discussed in #10450)
>
> Attached is a patch that does the necessary change.
>
>
> ---Files--------------------------------
> 0001-turn-parse-error-on-multiple-assignment-into-warning.patch (752 Bytes)
>
>