Fix visibility of alias of zsuper methods

This was broken by 71c746379d.

Fixes [Bug #18600]
This commit is contained in:
Jeremy Evans 2022-02-22 13:43:14 -08:00
parent 7f5440756e
commit 0c6e24d102
Notes: git 2022-03-11 01:35:52 +09:00
2 changed files with 11 additions and 0 deletions

View File

@ -265,6 +265,16 @@ class TestAlias < Test::Unit::TestCase
end;
end
class C2
public :system
alias_method :bar, :system
alias_method :system, :bar
end
def test_zsuper_alias_visibility
assert(C2.new.respond_to?(:system))
end
def test_alias_memory_leak
assert_no_memory_leak([], "#{<<~"begin;"}", "#{<<~'end;'}", rss: true)
begin;

View File

@ -2146,6 +2146,7 @@ rb_alias(VALUE klass, ID alias_name, ID original_name)
visi = METHOD_ENTRY_VISI(orig_me);
goto again;
case VM_METHOD_TYPE_ALIAS:
visi = METHOD_ENTRY_VISI(orig_me);
orig_me = orig_me->def->body.alias.original_me;
VM_ASSERT(orig_me->def->type != VM_METHOD_TYPE_ALIAS);
break;