[ruby-core:96270] [Ruby master Bug#10929] NilClass#to_proc and & don't mix?

[email protected]
Newsgroups gmane.comp.lang.ruby.core
Message-ID <redmine.journal-83169.20191216151544.892969f4953f878e@ruby-lang.org>
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:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.