From: merch-redmine@... Date: 2019-08-28T01:12:56+00:00 Subject: [ruby-core:94622] [Ruby master Bug#15255] Change in protected handling 2.3 -> 2.4, 2.5 Issue #15255 has been updated by jeremyevans0 (Jeremy Evans). 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. ---------------------------------------- Bug #15255: Change in protected handling 2.3 -> 2.4,2.5 https://bugs.ruby-lang.org/issues/15255#change-81212 * Author: viraptor (Stan Pitucha) * Status: Rejected * Priority: Normal * Assignee: * Target version: * ruby -v: * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN ---------------------------------------- It looks like when moving to 2.4 and higher, the access to protected method has changed. In the following case: ~~~ ruby 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: ~~~ ruby objects.map { |x| x.baz } ~~~ But it was an unexpected change. (so potentially a bug?) -- https://bugs.ruby-lang.org/ Unsubscribe: