Project

General

Profile

Bug #15255

Change in protected handling 2.3 -> 2.4,2.5

Added by viraptor (Stan Pitucha) about 1 year ago. Updated 3 months ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:89561]

Description

It looks like when moving to 2.4 and higher, the access to protected method has changed. In the following case:

class Foo
  def bar(objects)
    objects.map(&:baz)
  end

  protected

  def baz
    self.inspect
  end
end

a = Foo.new; b = Foo.new

a.bar([b])

The protected method '...' called will be raised. I haven't seen any explicit mention of this in the release notes.
It can be rewritten to successfully run as:

objects.map { |x| x.baz }

But it was an unexpected change. (so potentially a bug?)

History

Updated by jeremyevans0 (Jeremy Evans) 3 months ago

  • Status changed from Open to Rejected

Testing Ruby versions from 1.9 to 2.7, only Ruby 2.3 does not raise a NoMethodError for the example code. I think that can be considered a bug in Ruby 2.3. As Ruby 2.3 is no longer supported, the bug will not be fixed.

Also available in: Atom PDF