ruby-changes:14069
From: akr <ko1@a...>
Date: Sat, 21 Nov 2009 18:51:53 +0900 (JST)
Subject: [ruby-changes:14069] Ruby:r25882 (trunk): * vm_eval.c (rb_search_method_entry): show flags and klass value in
akr 2009-11-21 18:49:30 +0900 (Sat, 21 Nov 2009) New Revision: 25882 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25882 Log: * vm_eval.c (rb_search_method_entry): show flags and klass value in not implemented error message. Modified files: trunk/ChangeLog trunk/vm_eval.c Index: ChangeLog =================================================================== --- ChangeLog (revision 25881) +++ ChangeLog (revision 25882) @@ -1,3 +1,8 @@ +Sat Nov 21 18:48:35 2009 Tanaka Akira <akr@f...> + + * vm_eval.c (rb_search_method_entry): show flags and klass value in + not implemented error message. + Sat Nov 21 16:38:50 2009 Nobuyoshi Nakada <nobu@r...> * marshal.c (marshal_dump): use normal object as the buffer so Index: vm_eval.c =================================================================== --- vm_eval.c (revision 25881) +++ vm_eval.c (revision 25882) @@ -336,23 +336,34 @@ VALUE klass = CLASS_OF(recv); if (!klass) { - if (!IMMEDIATE_P(recv) && RBASIC(recv)->flags != 0) { + if (IMMEDIATE_P(recv)) { + rb_raise(rb_eNotImpError, + "method `%s' called on unexpected immediate object (%p)", + rb_id2name(mid), (void *)recv); + } + if (RBASIC(recv)->flags == 0) { + rb_raise(rb_eNotImpError, + "method `%s' called on terminated object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), (void *)recv, + RBASIC(recv)->flags, RBASIC(recv)->klass); + } + else { int type = BUILTIN_TYPE(recv); const char *typestr = rb_type_str(type); if (typestr) rb_raise(rb_eNotImpError, - "method `%s' called on hidden %s object (%p)", - rb_id2name(mid), typestr, (void *)recv); + "method `%s' called on hidden %s object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), typestr, (void *)recv, + RBASIC(recv)->flags, RBASIC(recv)->klass); else rb_raise(rb_eNotImpError, - "method `%s' called on hidden T_???" "(0x%02x) object (%p)", - rb_id2name(mid), type, (void *)recv); + "method `%s' called on hidden T_???" "(0x%02x) object" + " (%p flags=0x%"PRIxVALUE" klass=0x%"PRIxVALUE")", + rb_id2name(mid), type, (void *)recv, + RBASIC(recv)->flags, RBASIC(recv)->klass); } - else { - rb_raise(rb_eNotImpError, - "method `%s' called on terminated object (%p)", - rb_id2name(mid), (void *)recv); - } } return rb_method_entry(klass, mid); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/