diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-29 05:37:26 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-05-29 05:37:26 +0000 |
commit | e9b851af73549aa9c97af1a5fb2171152f0585a6 (patch) | |
tree | 732ad770e3797212f3fe5bff4123b053d9376f7d /insns.def | |
parent | 10aa7c3d30214869c7ddb1c3f204133f21552978 (diff) |
merges r28043 from trunk into ruby_1_9_2.
--
* insns.def (invokesuper): check consistency between class of self and
class of method being invoked by super. This is temporary measure
for YARV. See [ruby-core:30313] in detail. See [ruby-dev:40959]
[ruby-dev:39772] [ruby-core:27000] [ruby-core:27230]
* vm_insnhelper.c (vm_search_superclass): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'insns.def')
-rw-r--r-- | insns.def | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -1022,6 +1022,12 @@ invokesuper recv = GET_SELF(); vm_search_superclass(GET_CFP(), GET_ISEQ(), recv, TOPN(num), &id, &klass); + + /* temporary measure for [Bug #2402] [Bug #2502] [Bug #3136] */ + if (!rb_obj_is_kind_of(recv, klass)) { + rb_raise(rb_eNotImpError, "super from singleton method that is defined to multiple classes is not supported; this will be fixed in 1.9.3 or later"); + } + me = rb_method_entry(klass, id); CALL_METHOD(num, blockptr, flag, id, me, recv); |