Project

General

Profile

Bug #11188 ยป method-inspect-chain-alias-11188.patch

jeremyevans0 (Jeremy Evans), 08/12/2019 10:21 PM

View differences:

test/ruby/test_alias.rb
end
end
class Alias4 < Alias0
alias foo1 foo
alias foo2 foo1
alias foo3 foo2
end
def test_alias
x = Alias2.new
assert_equal "foo", x.bar
......
assert_raise(NoMethodError) { x.quux }
end
def test_alias_inspect
o = Alias4.new
assert_equal("TestAlias::Alias4(TestAlias::Alias0)#foo", o.method(:foo).inspect.split[1])
assert_equal("TestAlias::Alias4(TestAlias::Alias0)#foo1(foo)", o.method(:foo1).inspect.split[1])
assert_equal("TestAlias::Alias4(TestAlias::Alias0)#foo2(foo)", o.method(:foo2).inspect.split[1])
assert_equal("TestAlias::Alias4(TestAlias::Alias0)#foo3(foo)", o.method(:foo3).inspect.split[1])
end
class C
def m
$SAFE
vm_method.c
alias_me = method_entry_set(target_klass, alias_name, orig_me, visi, orig_me->owner);
RB_OBJ_WRITE(alias_me, &alias_me->owner, target_klass);
RB_OBJ_WRITE(alias_me, &alias_me->defined_class, defined_class);
if (orig_me->owner == defined_class &&
orig_me->owner != orig_me->defined_class &&
alias_me->owner == alias_me->defined_class) {
defined_class = orig_me->defined_class;
}
RB_OBJ_WRITE(alias_me, &alias_me->defined_class, defined_class);
}
}
    (1-1/1)