From df5f6825dbd90cb3568ee7ba35da0eec61226ba8 Mon Sep 17 00:00:00 2001 From: wanabe Date: Sat, 21 Aug 2010 14:38:17 +0000 Subject: * test/ruby/test_super.rb: add test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_super.rb | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_super.rb b/test/ruby/test_super.rb index 8de1e2fa7e..66faa70a76 100644 --- a/test/ruby/test_super.rb +++ b/test/ruby/test_super.rb @@ -139,4 +139,49 @@ class TestSuper < Test::Unit::TestCase } assert_match(/implicit argument passing of super from method defined by define_method/, e.message) end + + class SubSeq + def initialize + @first=11 + @first or fail + end + + def subseq + @first or fail + end + end + + class Indexed + def subseq + SubSeq.new + end + end + + Overlaid = proc do + class << self + def subseq + super.instance_eval(& Overlaid) + end + end + end + + def test_overlaid + assert_nothing_raised('[ruby-dev:40959]') do + overlaid = proc do |obj| + def obj.reverse + super + end + end + overlaid.call(str = "123") + overlaid.call(ary = [1,2,3]) + str.reverse + end + + assert_nothing_raised('[ruby-core:27230]') do + mid=Indexed.new + mid.instance_eval(&Overlaid) + mid.subseq + mid.subseq + end + end end -- cgit v1.2.3