Issue #10929 has been updated by mame (Yusuke Endoh).

Status changed from Open to Feedback

The suggested change is harmful.  It will break delegation: `def foo(&blk); bar(&blk); end; foo()`.

Ruby allows redefinition of `Integer#/` which is incredibly harmful, so it is possible to allow `NilClass#to_proc`.  But do you really want to allow that?

----------------------------------------
Bug #10929: NilClass#to_proc and & don't mix?
https://bugs.ruby-lang.org/issues/10929#change-83169

* Author: trans (Thomas Sawyer)
* Status: Feedback
* Priority: Normal
* Assignee: matz (Yukihiro Matsumoto)
* Target version: 
* ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
This is sort of like a "who would ever care" kind of bug. Nonetheless technically it seems like it is one. So I thought it best that I report it just the same.

~~~
  class NilClass
    def to_proc
      Proc.new{ |*x| nil }
    end
  end

  def f(&b)
    b.call(1)
  end  

  f(&nil)
  => NoMethodError: undefined method `call' for nil:NilClass
~~~

(Maybe it was fixed already. Filing out this issue reminded me I need to update my version of Ruby.)

---Files--------------------------------
block_from_nil.patch (771 Bytes)


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