diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 09:02:34 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 09:02:34 +0000 |
commit | c8854d2ca4be9ee6946e6d17b0e17d9ef130ee81 (patch) | |
tree | 6f3a7d8c0d522035db6cbb81d82bd9df326872a5 | |
parent | 415e9cef0d3399f69ccf2209a1f87e5bb7643c68 (diff) | |
download | ruby-c8854d2ca4be9ee6946e6d17b0e17d9ef130ee81.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-- | ChangeLog | 8 | ||||
-rw-r--r-- | test/ruby/test_super.rb | 5 | ||||
-rw-r--r-- | vm_insnhelper.c | 9 |
3 files changed, 9 insertions, 13 deletions
@@ -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 */ |