aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-06 09:02:34 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-06 09:02:34 +0000
commit57476c34ef3dc170674169082800645ad2b7b3e4 (patch)
tree6f3a7d8c0d522035db6cbb81d82bd9df326872a5
parent10d948f59fdb496f68d1ebad23eae93cb12fb689 (diff)
downloadruby-57476c34ef3dc170674169082800645ad2b7b3e4.tar.gz
* vm_insnhelper.c (vm_search_super_method): do not skip calling
same methods in super. [Bug #3351] * test/ruby/test_super.rb: fix a test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51161 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--test/ruby/test_super.rb5
-rw-r--r--vm_insnhelper.c9
3 files changed, 9 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index e0a1c4fd12..a5c69c4a46 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Mon Jul 6 17:59:05 2015 Koichi Sasada <ko1@atdot.net>
+
+ * vm_insnhelper.c (vm_search_super_method): do not skip calling
+ same methods in super.
+ [Bug #3351]
+
+ * test/ruby/test_super.rb: fix a test.
+
Mon Jul 6 17:59:11 2015 SHIBATA Hiroshi <hsbt@ruby-lang.org>
* ext/tk/tcltklib.c: removed deprecated safe level.
diff --git a/test/ruby/test_super.rb b/test/ruby/test_super.rb
index 7d4048b342..535383ee80 100644
--- a/test/ruby/test_super.rb
+++ b/test/ruby/test_super.rb
@@ -228,11 +228,8 @@ class TestSuper < Test::Unit::TestCase
A.send(:include, Override)
end
- # [Bug #3351]
def test_double_include
- assert_equal([:Base, :Override], DoubleInclude::B.new.foo)
- # should be changed as follows?
- # assert_equal([:Base, :Override, :Override], DoubleInclude::B.new.foo)
+ assert_equal([:Base, :Override, :Override], DoubleInclude::B.new.foo, "[Bug #3351]")
end
module DoubleInclude2
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 639efeef1c..2c6e76ce6e 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -2277,15 +2277,6 @@ vm_search_super_method(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_inf
/* TODO: use inline cache */
ci->me = rb_callable_method_entry(ci->klass, ci->mid);
ci->call = vm_call_super_method;
-
- while (iseq && !iseq->klass) {
- iseq = iseq->parent_iseq;
- }
-
- if (ci->me && ci->me->def->type == VM_METHOD_TYPE_ISEQ && def_iseq_ptr(ci->me->def) == iseq) {
- ci->klass = RCLASS_SUPER(ci->me->defined_class);
- ci->me = rb_callable_method_entry(ci->klass, ci->mid);
- }
}
/* yield */