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>