diff --git a/test/ruby/test_alias.rb b/test/ruby/test_alias.rb index 6d4fcc085b..539cd49488 100644 --- a/test/ruby/test_alias.rb +++ b/test/ruby/test_alias.rb @@ -328,4 +328,17 @@ class TestAlias < Test::Unit::TestCase } end; end + + def test_undef_method_error_message_with_zsuper_method + modules = [ + Module.new { private :class }, + Module.new { prepend Module.new { private :class } }, + ] + message = "undefined method 'class' for module '%s'" + modules.each do |mod| + assert_raise_with_message(NameError, message % mod) do + mod.alias_method :xyz, :class + end + end + end end diff --git a/vm_method.c b/vm_method.c index e4f71648ac..69f9a76377 100644 --- a/vm_method.c +++ b/vm_method.c @@ -2311,7 +2311,7 @@ rb_alias(VALUE klass, ID alias_name, ID original_name) if ((!RB_TYPE_P(klass, T_MODULE)) || (orig_me = search_method(rb_cObject, original_name, &defined_class), UNDEFINED_METHOD_ENTRY_P(orig_me))) { - rb_print_undef(klass, original_name, METHOD_VISI_UNDEF); + rb_print_undef(target_klass, original_name, METHOD_VISI_UNDEF); } }