From d0af0f2f2a1f83a7ae25eed3754c7d1db42ff9b9 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Sat, 26 May 2007 20:21:34 +0000 Subject: * eval.c (mnew): call of super via a method object should work again. [ruby-talk:248647], Thanks Calamitas. * test/ruby/test_method.rb (TestMethod::test_method_super): test for above fix. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@12391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ eval.c | 1 - test/ruby/test_method.rb | 11 +++++++++++ version.h | 6 +++--- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index decdac9e30..ff4efcf41c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Sun May 27 05:19:03 2007 URABE Shyouhei + + * eval.c (mnew): call of super via a method object should work again. + [ruby-talk:248647], Thanks Calamitas. + + * test/ruby/test_method.rb (TestMethod::test_method_super): test for + above fix. + Wed May 23 07:29:53 2007 URABE Shyouhei * process.c (proc_exec_v): terminate timer thread in advance. diff --git a/eval.c b/eval.c index f0b5368f02..3c49ca082d 100644 --- a/eval.c +++ b/eval.c @@ -8977,7 +8977,6 @@ mnew(klass, obj, id, mklass) (FL_TEST(rklass, FL_SINGLETON) || TYPE(rklass) == T_ICLASS)) { rklass = RCLASS(rklass)->super; } - if (TYPE(klass) == T_ICLASS) klass = RBASIC(klass)->klass; method = Data_Make_Struct(mklass, struct METHOD, bm_mark, free, data); data->klass = klass; data->recv = obj; diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index c30705cb15..ef28098dce 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -11,8 +11,13 @@ class TestMethod < Test::Unit::TestCase class Base def foo() :base end + def bar() :bar end + end + module SuperBar + def bar() super end end class Derived < Base + include SuperBar def foo() :derived end end @@ -39,4 +44,10 @@ class TestMethod < Test::Unit::TestCase um.bind(Base.new) end end + + def test_method_super + assert_nothing_raised do + assert_equal(:bar, Derived.new.method(:bar).call) + end + end end diff --git a/version.h b/version.h index 85b9fb0f04..7ce1cfd464 100644 --- a/version.h +++ b/version.h @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.8.6" #define RUBY_RELEASE_DATE "2007-05-23" #define RUBY_VERSION_CODE 186 -#define RUBY_RELEASE_CODE 20070523 -#define RUBY_PATCHLEVEL 27 +#define RUBY_RELEASE_CODE 20070527 +#define RUBY_PATCHLEVEL 28 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 6 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 5 -#define RUBY_RELEASE_DAY 23 +#define RUBY_RELEASE_DAY 27 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- cgit v1.2.3