summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-13 09:10:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-02-13 09:10:12 +0000
commitd40ef8a85c271c3570e778fb74f53d6401281a9d (patch)
tree4fc0d2b7ce2c330a966d3a4b8b42f2ec0cb7fed6
parent4e5d0cee76dc263549958e2f08ea010a5cbd79b4 (diff)
proc.c: show the given name
* proc.c (method_inspect): show the given name primarily, and original_id if aliased. [ruby-core:52048] [Bug #7806] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--proc.c6
-rw-r--r--test/ruby/test_method.rb11
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 7632d2a0e3..4e685098ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 13 18:10:09 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * proc.c (method_inspect): show the given name primarily, and
+ original_id if aliased. [ruby-core:52048] [Bug #7806]
+
Wed Feb 13 17:56:39 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (warnflags): disable -Werror by default unless
diff --git a/proc.c b/proc.c
index 21fd22d95e..6951562b27 100644
--- a/proc.c
+++ b/proc.c
@@ -1958,7 +1958,11 @@ method_inspect(VALUE method)
}
}
rb_str_buf_cat2(str, sharp);
- rb_str_append(str, rb_id2str(data->me->def->original_id));
+ rb_str_append(str, rb_id2str(data->id));
+ if (data->id != data->me->def->original_id) {
+ rb_str_catf(str, "(%"PRIsVALUE")",
+ rb_id2str(data->me->def->original_id));
+ }
if (data->me->def->type == VM_METHOD_TYPE_NOTIMPLEMENTED) {
rb_str_buf_cat2(str, " (not-implemented)");
}
diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb
index 03d7cab2d7..2ef37c4af6 100644
--- a/test/ruby/test_method.rb
+++ b/test/ruby/test_method.rb
@@ -189,6 +189,11 @@ class TestMethod < Test::Unit::TestCase
assert_equal(class << o; self; end, m.owner)
assert_equal(:foo, m.unbind.name)
assert_equal(class << o; self; end, m.unbind.owner)
+ class << o
+ alias bar foo
+ end
+ m = o.method(:bar)
+ assert_equal(:bar, m.name)
end
def test_instance_method
@@ -311,6 +316,12 @@ class TestMethod < Test::Unit::TestCase
c2.class_eval { private :foo }
m2 = c2.new.method(:foo)
assert_equal("#<Method: #{ c2.inspect }(#{ c.inspect })#foo>", m2.inspect)
+
+ bug7806 = '[ruby-core:52048] [Bug #7806]'
+ c3 = Class.new(c)
+ c3.class_eval { alias bar foo }
+ m3 = c3.new.method(:bar)
+ assert_equal("#<Method: #{ c3.inspect }#bar(foo)>", m3.inspect, bug7806)
end
def test_callee_top_level