Issue #7314 has been updated by Charles Nutter.


Maybe this should warn or error when you attempt to turn a proc into a lambda?

The JRuby behavior is not intentional and we'll align with whatever MRI does. I'd also note that `next` always exits the block exactly like lambda's `return`, for all of procs, lambdas, and uncaptured blocks.

----------------------------------------
Feature #7314: Convert Proc to Lambda doesn't work in MRI
https://bugs.ruby-lang.org/issues/7314#change-58738

* Author: Richard Schneeman
* Status: Assigned
* Priority: Normal
* Assignee: Yukihiro Matsumoto
----------------------------------------
I have code where I need to convert a proc to a lambda (i need to be able to return out of the block). I would expect that passing a proc into a lambda to return a lambda. When I run this code on MRI i do not get the result I would expect

```ruby
my_proc = proc { |x| x }
my_lambda = lambda &my_proc
my_lambda.lambda?
```

The result is `false` but I would expect it to be  `true`

There is currently a way to turn a proc into a lambda in MRI like this: 

```ruby
def convert_to_lambda &block
  obj = Object.new
  obj.define_singleton_method(:_, &block)
  return obj.method(:_).to_proc
end
```

But this feels like a hack, and is not supported across other implementations. I would expect that passing a proc into a lambda to return a lambda, I believe it is a bug.






-- 
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>