summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-26 20:21:34 +0000
committershyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-05-26 20:21:34 +0000
commitd0af0f2f2a1f83a7ae25eed3754c7d1db42ff9b9 (patch)
tree1c8188fd5a19fa29188a1e1edf3f345913d3d5e1
parent6175eb5f0e9a935ba67ddaf9e4d1065df3904fce (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--ChangeLog8
-rw-r--r--eval.c1
-rw-r--r--test/ruby/test_method.rb11
-rw-r--r--version.h6
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 <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.
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[];