diff options
-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:52:37 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 06:51:46 2007 URABE Shyouhei <shyouhei@ruby-lang.org> * lib/cgi.rb (CGI#[]): get rid of exceptions being raised. @@ -8903,7 +8903,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.5" #define RUBY_RELEASE_DATE "2007-05-23" #define RUBY_VERSION_CODE 185 -#define RUBY_RELEASE_CODE 20070523 -#define RUBY_PATCHLEVEL 49 +#define RUBY_RELEASE_CODE 20070527 +#define RUBY_PATCHLEVEL 50 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 #define RUBY_VERSION_TEENY 5 #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[]; |