diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-05-26 20:21:34 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-05-26 20:21:34 +0000 |
commit | d0af0f2f2a1f83a7ae25eed3754c7d1db42ff9b9 (patch) | |
tree | 1c8188fd5a19fa29188a1e1edf3f345913d3d5e1 | |
parent | 6175eb5f0e9a935ba67ddaf9e4d1065df3904fce (diff) |
* 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
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | eval.c | 1 | ||||
-rw-r--r-- | test/ruby/test_method.rb | 11 | ||||
-rw-r--r-- | version.h | 6 |
4 files changed, 22 insertions, 4 deletions
@@ -1,3 +1,11 @@ +Sun May 27 05:19:03 2007 URABE Shyouhei <shyouhei@ruby-lang.org> + + * 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 <shyouhei@ruby-lang.org> * process.c (proc_exec_v): terminate timer thread in advance. @@ -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 @@ -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[]; |