Issue #16932 has been reported by nobu (Nobuyoshi Nakada).
----------------------------------------
Bug #16932: `defined?` on refined method call returns non-nil even before `using`
https://bugs.ruby-lang.org/issues/16932
* Author: nobu (Nobuyoshi Nakada)
* Status: Open
* Priority: Normal
* ruby -v: 2.8.0dev (2020-06-03T10:13:36Z master ee35a4dad3)
* Backport: 2.5: REQUIRED, 2.6: REQUIRED, 2.7: REQUIRED
----------------------------------------
From 2.0 to master (ee35a4dad3), the second `defined?(a.x)` before `using` returns truthy value.
``` ruby
class A
end
a = A.new
p defined?(a.x) #=> nil (OK)
m = Module.new do
refine(A) do
def x
end
end
end
a.x rescue p $! #=> NoMethodError: undefined method `x'
p defined?(a.x) #=> "method" (NG)
using m
p defined?(a.x) #=> "method" (OK)
```
--
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>