From: usa@... Date: 2021-04-04T23:03:19+00:00 Subject: [ruby-core:103218] [Ruby master Bug#16931] `defined?` against a protected method call on an inherited instance returns wrong `nil` Issue #16931 has been updated by usa (Usaku NAKAMURA). Backport changed from 2.5: REQUIRED, 2.6: REQUIRED, 2.7: DONE to 2.5: REQUIRED, 2.6: DONE, 2.7: DONE ruby_2_6 r67920 merged revision(s) de9d6a7a8cb0929e0b4cf0a3120971c7b8ee8927,da5bd0047d6c961105da210c69d4c88421324b70,ce91c5615ca96f357519043181fb5b76b57ee223,c53aebb1d2eb5afbb18f9b3db9f9c956a463a4e1,d05f04d27dd86c67e4a8dfff4392f806cf577bdf. ---------------------------------------- Bug #16931: `defined?` against a protected method call on an inherited instance returns wrong `nil` https://bugs.ruby-lang.org/issues/16931#change-91294 * Author: nobu (Nobuyoshi Nakada) * Status: Closed * Priority: Normal * ruby -v: 2.8.0dev (2020-06-02T08:21:03Z master 56ca006784) * Backport: 2.5: REQUIRED, 2.6: DONE, 2.7: DONE ---------------------------------------- The following code shows `:callable` first, but `nil` next, since 1.9. If the method is callable, `defined?` expression has to return truthy value. ``` ruby class A def foo :callable end protected :foo def t(x) x.foo end def q(x) defined?(x.foo) end end class B :callable p a.q(b) #=> nil ``` -- https://bugs.ruby-lang.org/ Unsubscribe: