Project

General

Profile

Actions

Bug #7643

closed

call to super in define_method in refine results in stack level too deep

Added by beatrichartz (Beat Richartz) over 11 years ago. Updated over 11 years ago.

Status:
Rejected
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.1]
Backport:
[ruby-core:51210]

Description

=begin
When (({define_method})) is used within the refine block argument, calls to super will result in a stack level too deep. Definitions with def can call super without problems.

module A
refine Fixnum do
%i(+ -).each do |m|
define_method m do |other|
super(other)
end
end

  def * other
    super(other)
  end
end

end

class B
using A

def working
  puts 'working'
  1 * 1
end

def error
  puts 'stack level too deep'
  1 + 1
end

end

puts B.new.working
puts B.new.error

=end


Files

bug.rb (359 Bytes) bug.rb beatrichartz (Beat Richartz), 01/01/2013 02:49 AM

Updated by shugo (Shugo Maeda) over 11 years ago

  • Status changed from Open to Feedback
  • Assignee set to shugo (Shugo Maeda)

Hi,

beatrichartz (Beat Richartz) wrote:

When define_method is used within the refine block argument, calls to super will result in a stack level too deep. Definitions with def can call super without problems.

r38126 is too old. Please try the latest revision, where Module#using is removed.

The following modified program doesn't cause a stack level too deep error in my Ubuntu box (ruby 2.0.0dev (2012-12-29 trunk 38655) [i686-linux]):

require 'refinement'
module A
refine Fixnum do
%i(+ -).each do |m|
define_method m do |other|
super(other)
end
end

  def * other
    super(other)
  end
end

end

using A

class B
def working
puts 'working'
1 * 1
end

def error
  puts 'stack level too deep'
  1 + 1
end

end

puts B.new.working
puts B.new.error

Updated by nobu (Nobuyoshi Nakada) over 11 years ago

  • Description updated (diff)

Updated by beatrichartz (Beat Richartz) over 11 years ago

Ok, also working for me here with r38676. Should have checked the new versions before, sorry. Have a nice day!

Updated by shugo (Shugo Maeda) over 11 years ago

  • Status changed from Feedback to Rejected

beatrichartz (Beat Richartz) wrote:

Ok, also working for me here with r38676. Should have checked the new versions before, sorry. Have a nice day!

Thanks for your confirmation. So I close this issue.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0