The magic comment at the top of this code example breaks the inspection
# frozen_string_literal: true
module RefineExport
refine Module do
# See https://bugs.ruby-lang.org/issues/17374#note-8
def refine(what, export: false)
mod = super(what)
return mod unless export
export = self if export == true
export.module_eval do
mod.instance_methods(false).each do |method|
define_method(method, mod.instance_method(method))
end
mod.private_instance_methods(false).each do |method|
private define_method(method, mod.instance_method(method))
end
end
mod
end
end
end
module M
using RefineExport
# refine self, exports: [self, Object] do
refine self do
def a() = 1
def b() = a
end
end
include M
using M
(method(:b).methods - Object.new.methods).inspect
# => #<String:0x00000001569344d0>
b # => 1
The magic comment at the top of this code example breaks the inspection