Project

General

Profile

Actions

Bug #9236

closed

include + include + alias_method + super behaviour inconsistency between 1.9 and 2.0

Added by matsuda (Akira Matsuda) almost 11 years ago. Updated almost 11 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-12-10 trunk 44126) [x86_64-darwin12.0]
[ruby-dev:47846]

Description

=begin
The following code behaves differently under Ruby 1 and Ruby 2.

module Fun
def hello
orig_hello
end
end

module M1
def hello
p 'hello!'
end
end

module M2
def hello
super
end
end

class Foo
include M1
include M2

alias_method :orig_hello, :hello
include Fun

end

Foo.new.hello

% ruby -v fun.rb
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin12.5.0]
"hello!"

% ruby -v fun.rb
ruby 2.1.0dev (2013-12-10 trunk 44126) [x86_64-darwin12.0]
fun.rb:3: stack level too deep (SystemStackError)

Let's see if this is an intended spec change or a bug.

(('#')) This issue was originally reported to ((<Rails Core ML by Gary Weaver|URL:https://groups.google.com/forum/#!topic/rubyonrails-core/z5Japo3oIzk>)).
=end


Related issues 1 (0 open1 closed)

Is duplicate of Ruby master - Bug #7842: An alias of a "prepend"ed method skips the original method when calling superClosednobu (Nobuyoshi Nakada)02/13/2013Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0