From 3a724e086af6a6a8846da1f194cfb12c1977573b Mon Sep 17 00:00:00 2001 From: yugui Date: Sun, 25 Oct 2009 14:46:28 +0000 Subject: merges r24513,r24514 and r24515 from trunk into ruby_1_9_1. -- * class.c (rb_define_class_id_under, rb_define_module_id_under): new functions to define a nested class/module with non-ascii name. * struct.c (make_struct): use name with encoding. * struct.c (inspect_struct): ditto. [ruby-core:24849] -- * test/ruby/test_marshal.rb (test_class_nonascii): test for non-ascii name class. -- * class.c (rb_define_module_id_under): fix the name. * class.c (rb_define_module_under): fix for prevvious changes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@25479 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- struct.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'struct.c') diff --git a/struct.c b/struct.c index bda3cde409..3d876bb216 100644 --- a/struct.c +++ b/struct.c @@ -191,7 +191,7 @@ make_struct(VALUE name, VALUE members, VALUE klass) rb_warn("redefining constant Struct::%s", StringValuePtr(name)); rb_mod_remove_const(klass, ID2SYM(id)); } - nstr = rb_define_class_under(klass, rb_id2name(id), klass); + nstr = rb_define_class_id_under(klass, id, klass); } rb_iv_set(nstr, "__members__", members); @@ -488,21 +488,19 @@ rb_struct_each_pair(VALUE s) static VALUE inspect_struct(VALUE s, VALUE dummy, int recur) { - const char *cname = rb_class2name(rb_obj_class(s)); - VALUE str, members; + VALUE cname = rb_class_name(rb_obj_class(s)); + VALUE members, str = rb_str_new2("#", cname); + return rb_str_cat2(str, ":...>"); } members = rb_struct_members(s); - if (cname[0] == '#') { - str = rb_str_new2("# 0) { rb_str_cat2(str, ", "); } + else if (first != '#') { + rb_str_cat2(str, " "); + } slot = RARRAY_PTR(members)[i]; id = SYM2ID(slot); if (rb_is_local_id(id) || rb_is_const_id(id)) { -- cgit v1.2.3