Project

General

Profile

Actions

Bug #918

closed

super doesn't work correctly when used with define_method

Added by tmat (Tomas Matousek) over 15 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
Backport:
[ruby-core:20786]

Description

=begin
The following prints B,A in 1.8 but B,B,A in 1.9.*.
It seems that the receiver's class (C) is incorrectly used to determine the base class. The class where the target method (B#m) is defined (i.e. B) should be used so that A#m is invoked immediately.

class A
def m
puts 'A'
end
end

class B < A
define_method(:m) do
puts 'B'
super()
end
end

class C < B
end

C.new.m
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0