Project

General

Profile

ActionsLike0

Bug #13446

closed

refinements with prepend for module has strange behavior

Added by mtsmfm (Fumiaki Matsushima) almost 8 years ago. Updated over 5 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
[ruby-core:80748]

Description

using Module.new {
  refine Enumerable do
    alias :orig_sum :sum
  end
}

module Enumerable
  def sum(*args)
    orig_sum(*args)
  end
end

class GenericEnumerable
  include Enumerable

  def each
  end
end

# GenericEnumerable.new.sum # if we uncomment this line, `GenericEnumerable#sum` will work
Enumerable.prepend(Module.new) # if we comment out this line, `GenericEnumerable#sum` will work

p GenericEnumerable.new.sum # undefined method `orig_sum' for #<GenericEnumerable:0x0000000127c120 @values=[1, 2, 3]> (NoMethodError)

Is this intentional?


Related issues 1 (0 open1 closed)

Related to Ruby - Bug #16242: Refinements method call to failedClosedActions

Updated by nobu (Nobuyoshi Nakada) almost 8 years ago

  • Description updated (diff)
  • Status changed from Open to Assigned
  • Assignee set to nobu (Nobuyoshi Nakada)
#2

Updated by wanabe (_ wanabe) over 5 years ago

  • Related to Bug #16242: Refinements method call to failed added
#4

Updated by jeremyevans (Jeremy Evans) over 5 years ago

  • Status changed from Assigned to Closed
ActionsLike0

Also available in: Atom PDF