mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
merge revision(s) 56489: [Backport #12832]
* proc.c (mnew_internal): follow the original class, not to loop the prepended module. [ruby-core:77591] [Bug #12832] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@56720 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a42f44459f
commit
4ed0c2c6ff
4 changed files with 23 additions and 2 deletions
|
|
@ -1,3 +1,8 @@
|
|||
Sat Nov 12 00:50:35 2016 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* proc.c (mnew_internal): follow the original class, not to loop
|
||||
the prepended module. [ruby-core:77591] [Bug #12832]
|
||||
|
||||
Sat Nov 12 00:46:50 2016 Shugo Maeda <shugo@ruby-lang.org>
|
||||
|
||||
* cont.c (cont_new): disable optimization if clang's version is
|
||||
|
|
|
|||
2
proc.c
2
proc.c
|
|
@ -1296,7 +1296,7 @@ mnew_internal(const rb_method_entry_t *me, VALUE klass,
|
|||
}
|
||||
if (me->def->type == VM_METHOD_TYPE_ZSUPER) {
|
||||
if (me->defined_class) {
|
||||
VALUE klass = RCLASS_SUPER(me->defined_class);
|
||||
VALUE klass = RCLASS_SUPER(RCLASS_ORIGIN(me->defined_class));
|
||||
id = me->def->original_id;
|
||||
me = (rb_method_entry_t *)rb_callable_method_entry_without_refinements(klass, id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -889,6 +889,22 @@ class TestMethod < Test::Unit::TestCase
|
|||
assert_nil(m, Feature9781)
|
||||
end
|
||||
|
||||
def test_prepended_public_zsuper
|
||||
mod = EnvUtil.labeled_module("Mod") {private def foo; :ok end}
|
||||
mods = [mod]
|
||||
obj = Object.new.extend(mod)
|
||||
class << obj
|
||||
public :foo
|
||||
end
|
||||
2.times do |i|
|
||||
mods.unshift(mod = EnvUtil.labeled_module("Mod#{i}") {def foo; end})
|
||||
obj.singleton_class.prepend(mod)
|
||||
end
|
||||
m = obj.method(:foo)
|
||||
assert_equal(mods, mods.map {m.owner.tap {m = m.super_method}})
|
||||
assert_nil(m)
|
||||
end
|
||||
|
||||
def rest_parameter(*rest)
|
||||
rest
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#define RUBY_VERSION "2.3.2"
|
||||
#define RUBY_RELEASE_DATE "2016-11-12"
|
||||
#define RUBY_PATCHLEVEL 209
|
||||
#define RUBY_PATCHLEVEL 210
|
||||
|
||||
#define RUBY_RELEASE_YEAR 2016
|
||||
#define RUBY_RELEASE_MONTH 11
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue