Issue #14068 has been reported by mame (Yusuke Endoh).

----------------------------------------
Bug #14068: Unused refinement breaks method search
https://bugs.ruby-lang.org/issues/14068

* Author: mame (Yusuke Endoh)
* Status: Open
* Priority: Normal
* Assignee: shugo (Shugo Maeda)
* Target version: 2.5
* ruby -v: ruby 2.5.0dev (2017-10-30 trunk 60565) [x86_64-linux]
* Backport: 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
The following is an expected behavior.

~~~
module M1
  def foo
    p "M1#foo"
  end
end

module M2
end

include M1
include M2
foo() #=> "M1#foo"
~~~

But, defining UnusedRefinement that refines M2, breaks the behavior, even if it is entirely not used.

~~~
module M1
  def foo
    p "M1#foo"
  end
end

module M2
end

module UnusedRefinement # <=== INSERTED
  refine(M2) do
    def foo
      p "M2#foo"
    end
  end
end

include M1
include M2
foo() #=> test.rb:20:in `<main>': undefined method `foo' for main:Object (NoMethodError)
~~~



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