[ruby-core:77603] [Ruby trunk Bug#12705] yielding args to a lambda uses block/proc rather than lambda/method semantics

From: alxtskrnk@...
Date: 2016-10-12 16:49:15 UTC
List: ruby-core #77603
Issue #12705 has been updated by bug hit.


please also take a look at Bug #12706, it may be related, also has to to with how args are yielded to lambdas

----------------------------------------
Bug #12705: yielding args to a lambda uses block/proc rather than lambda/method semantics
https://bugs.ruby-lang.org/issues/12705#change-60873

* Author: bug hit
* Status: Assigned
* Priority: Normal
* Assignee: Koichi Sasada
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
```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:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next