summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-02-25 09:16:25 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2002-02-25 09:16:25 +0000
commit6d47b8a9cc988bb210fc44ce991a0212d97296e4 (patch)
tree62abd8947818da9f117b0f2fe552b8b6f6c43a33 /eval.c
parentaaa30fd040781355739b5cceb372df46851a2f5b (diff)
* eval.c (method_inspect): should not dump core for unbound
singleton methods. * object.c (rb_mod_to_s): better description. * hash.c (env_select): should path the assoc list. * process.c (rb_syswait): thread kludge; should be fixed to support native thread. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/eval.c b/eval.c
index fef1c86809..e6bcdc859e 100644
--- a/eval.c
+++ b/eval.c
@@ -6941,28 +6941,33 @@ method_inspect(method)
rb_str_buf_cat2(str, ": ");
if (FL_TEST(data->klass, FL_SINGLETON)) {
- VALUE v;
+ VALUE v = rb_iv_get(data->klass, "__attached__");
- rb_str_buf_append(str, rb_inspect(data->recv));
- v = rb_iv_get(data->klass, "__attached__");
- if (data->recv != v) {
- rb_str_buf_cat2(str, "(");
+ if (data->recv == Qundef) {
+ rb_str_buf_append(str, rb_inspect(data->klass));
+ }
+ else if (data->recv == v) {
rb_str_buf_append(str, rb_inspect(v));
- rb_str_buf_cat2(str, ").");
+ sharp = ".";
}
else {
- rb_str_buf_cat2(str, ".");
+ rb_str_buf_append(str, rb_inspect(data->recv));
+ rb_str_buf_cat2(str, "(");
+ rb_str_buf_append(str, rb_inspect(v));
+ rb_str_buf_cat2(str, ")");
+ sharp = ".";
}
}
else {
rb_str_buf_cat2(str, rb_class2name(data->rklass));
- rb_str_buf_cat2(str, "(");
- s = rb_class2name(data->klass);
- rb_str_buf_cat2(str, s);
- rb_str_buf_cat2(str, ")#");
+ if (data->rklass != data->klass) {
+ rb_str_buf_cat2(str, "(");
+ rb_str_buf_cat2(str, rb_class2name(data->klass));
+ rb_str_buf_cat2(str, ")");
+ }
}
- s = rb_id2name(data->oid);
- rb_str_buf_cat2(str, s);
+ rb_str_buf_cat2(str, sharp);
+ rb_str_buf_cat2(str, rb_id2name(data->oid));
rb_str_buf_cat2(str, ">");
return str;