From: naruse@... Date: 2017-03-21T14:05:05+00:00 Subject: [ruby-core:80265] [Ruby trunk Bug#12705] yielding args to a lambda uses block/proc rather than lambda/method semantics Issue #12705 has been updated by naruse (Yui NARUSE). Backport changed from 2.2: UNKNOWN, 2.3: REQUIRED, 2.4: REQUIRED to 2.2: UNKNOWN, 2.3: REQUIRED, 2.4: DONE ruby_2_4 r58045 merged revision(s) 57192,57464,58016,58018,58019. ---------------------------------------- Bug #12705: yielding args to a lambda uses block/proc rather than lambda/method semantics https://bugs.ruby-lang.org/issues/12705#change-63701 * Author: bughit (bug hit) * Status: Closed * Priority: Normal * Assignee: nobu (Nobuyoshi Nakada) * Target version: 2.5 * ruby -v: * Backport: 2.2: UNKNOWN, 2.3: REQUIRED, 2.4: DONE ---------------------------------------- ```ruby def yield_test yield 1, 2 yield [1, 2] end def foo(a, b) p a, b end method_lambda = method(:foo).to_proc normal_lambda = ->a, b{p a, b} yield_test(&normal_lambda) yield_test(&method_lambda) ``` the yield of [1, 2] to the method_lambda produces an argument error as you would expect but the same yield to the normal_lamda does not, the single array arg is slpatted per block/proc semantics -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>