Project

General

Profile

Actions

Bug #16932

closed

`defined?` on refined method call returns non-nil even before `using`

Added by nobu (Nobuyoshi Nakada) over 4 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
2.8.0dev (2020-06-03T10:13:36Z master ee35a4dad3)
[ruby-core:98642]

Description

From 2.0 to master (ee35a4dad3), the second defined?(a.x) before using returns truthy value.

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)
Actions

Also available in: Atom PDF

Like0
Like0