summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/ruby/test_alias.rb10
-rw-r--r--vm_method.c1
2 files changed, 11 insertions, 0 deletions
diff --git a/test/ruby/test_alias.rb b/test/ruby/test_alias.rb
index 99f2223b49..0d33cb993c 100644
--- a/test/ruby/test_alias.rb
+++ b/test/ruby/test_alias.rb
@@ -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;
diff --git a/vm_method.c b/vm_method.c
index edbaad2396..0400aab801 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -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;