[ruby-core:94622] [Ruby master Bug#15255] Change in protected handling 2.3 -> 2.4, 2.5
From:
merch-redmine@...
Date:
2019-08-28 01:12:56 UTC
List:
ruby-core #94622
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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>