[#18651] Enumerable#zip — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

77 messages 2002/11/05
[#18659] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/06

原です。

[#18669] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/06

まつもと ゆきひろです

[#18675] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/07

原です。

[#18684] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/07

まつもと ゆきひろです

[#18690] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/08

原です。

[#18728] Re: Enumerable#zip — Daisuke Aoki <dai@...> 2002/11/09

青木@横浜です。基本的にROM な人間なんですがなんとなく書いてみました。

[#18774] Re: Enumerable#zip — Daisuke Aoki <dai@...> 2002/11/13

青木@横浜です。

[#18799] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/15

原です。

[#18802] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/15

In article <5.1.1.8.2.20021115145423.03541008@blade.nagaokaut.ac.jp>,

[#18803] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/15

まつもと ゆきひろです

[#18806] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/15

In article <1037348006.479453.32695.nullmailer@picachu.netlab.jp>,

[#18808] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/15

まつもと ゆきひろです

[#18823] Re: Enumerable#zip — Shugo Maeda <shugo@...> 2002/11/18

前田です。

[#18833] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/18

In article <8765uv4fu7.wl@studly.priv.netlab.jp>,

[#18835] Re: Enumerable#zip — Shugo Maeda <shugo@...> 2002/11/18

前田です。

[#18845] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/19

In article <874raf6xuc.wl@studly.priv.netlab.jp>,

[#18870] Re: Enumerable#zip — Shugo Maeda <shugo@...> 2002/11/21

前田です。

[#18873] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/21

In article <87fztv5zir.wl@studly.priv.netlab.jp>,

[#18692] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/08

In article <4.3.2-J.20021108124934.033a2eb0@blade.nagaokaut.ac.jp>,

[#18696] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/08

原です。

[#18713] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/09

まつもと ゆきひろです

[#18719] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/09

In article <1036742681.769607.13070.nullmailer@picachu.netlab.jp>,

[#18721] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/09

まつもと ゆきひろです

[#18723] Re: Enumerable#zip — Tanaka Akira <akr@...17n.org> 2002/11/09

In article <1036847474.074389.7942.nullmailer@picachu.netlab.jp>,

[#18735] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/11

原です。

[#18746] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/11

まつもと ゆきひろです

[#18749] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/12

原です。

[#18766] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/13

まつもと ゆきひろです

[#18800] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/15

原です。

[#18801] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/15

まつもと ゆきひろです

[#18804] Re: Enumerable#zip — Shin-ichiro HARA <sinara@...> 2002/11/15

原です。

[#18805] Re: Enumerable#zip — matz@... (Yukihiro Matsumoto) 2002/11/15

まつもと ゆきひろです

[#18754] Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — "NAKAMURA, Hiroshi" <nahi@...>

なひです。

27 messages 2002/11/12
[#18755] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — nobu.nakada@... 2002/11/12

なかだです。

[#18776] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/11/14

なひです。

[#18777] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/11/14

なひです。ひええすいません、タブが落ちちゃった。

[#18789] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — "NAKAMURA, Hiroshi" <nahi@...> 2002/11/14

なひです。

[#18795] Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7 — nobu.nakada@... 2002/11/15

なかだです。

[#18820] deprecated method( Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7) — nobu.nakada@... 2002/11/18

なかだです。

[#18821] Re: deprecated method( Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7) — matz@... (Yukihiro Matsumoto) 2002/11/18

まつもと ゆきひろです

[#18825] Re: deprecated method( Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7) — nobu.nakada@... 2002/11/18

なかだです。

[#18861] class variables — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

31 messages 2002/11/20
[#18913] Re: class variables — "K.Kosako" <kosako@...> 2002/11/22

Yukihiro Matsumotoさんの

[#18895] [patch] install bat file on Windows — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

14 messages 2002/11/22
[#18900] Re: [patch] install bat file on Windows — "Akinori MUSHA" <knu@...> 2002/11/22

At Fri, 22 Nov 2002 11:09:19 +0900,

[#18903] Re: [patch] install bat file on Windows — "U.Nakamura" <usa@...> 2002/11/22

こんにちは、なかむら(う)です。

[#18966] [ONIGURUMA] \S doesn't match multibyte char (Re: [ruby-list:36618] Re: 全角文字に挟まれた半角スペースを削除するには?) — nobu.nakada@...

なかだです。

13 messages 2002/11/28

[ruby-dev:18820] deprecated method( Re: Different caller(0) in trace_func when NameError from toplevel between 1.6 and 1.7)

From: nobu.nakada@...
Date: 2002-11-18 04:30:50 UTC
List: ruby-dev #18820
なかだです。

At Fri, 15 Nov 2002 09:23:41 +0900,
Nobuyoshi-Nakada wrote:
> どっちかというと、メソッド定義の時点でマークしておいて、NODEの
> 書き換えはrb_call()あたりでやったほうがいいような気がしてます。

というわけで、Module#deprecate_methodその他諸々です。


Index: array.c
===================================================================
RCS file: /cvs/ruby/src/ruby/array.c,v
retrieving revision 1.97
diff -u -2 -p -I_WIN32 -INT -r1.97 array.c
--- array.c	3 Nov 2002 11:04:16 -0000	1.97
+++ array.c	18 Nov 2002 02:49:22 -0000
@@ -610,6 +610,4 @@ rb_ary_indexes(argc, argv, ary)
     long i;
 
-    rb_warn("Array#%s is deprecated; use Array#select",
-	    rb_id2name(rb_frame_last_func()));
     new_ary = rb_ary_new2(argc);
     for (i=0; i<argc; i++) {
@@ -1877,4 +1875,6 @@ Init_Array()
     rb_define_method(rb_cArray, "indexes", rb_ary_indexes, -1);
     rb_define_method(rb_cArray, "indices", rb_ary_indexes, -1);
+    rb_deprecate_method(rb_cArray, "indexes", "select", 1);
+    rb_deprecate_method(rb_cArray, "indices", "select", 1);
     rb_define_method(rb_cArray, "become", rb_ary_replace, 1);
     rb_define_method(rb_cArray, "join", rb_ary_join_m, -1);
Index: error.c
===================================================================
RCS file: /cvs/ruby/src/ruby/error.c,v
retrieving revision 1.51
diff -u -2 -p -I_WIN32 -INT -r1.51 error.c
--- error.c	3 Nov 2002 11:04:16 -0000	1.51
+++ error.c	18 Nov 2002 03:15:28 -0000
@@ -29,6 +29,7 @@ int ruby_nerrs;
 static void
 err_snprintf(buf, len, fmt, args)
-    char *buf, *fmt;
+    char *buf;
     long len;
+    const char *fmt;
     va_list args;
 {
@@ -1106,4 +1107,26 @@ err_append(s)
 	fputs("\n", stderr);
 	fflush(stderr);
+    }
+}
+
+void
+rb_deprecated(klass, old, new, now)
+    VALUE klass;
+    const char *old, *new;
+    int now;
+{
+    const char *classname, *be;
+
+    if (!now && !RTEST(ruby_verbose)) return;
+    if (!klass) klass = ruby_frame->last_class;
+    classname = rb_class2name(klass);
+    if (!old) old = rb_id2name(ruby_frame->last_func);
+    be = now ? "is" : "will be";
+    if (new) {
+	rb_warn("%s#%s %s deprecated; use %s#%s", classname, old,
+		be, classname, new);
+    }
+    else {
+	rb_warn("%s#%s %s deprecated", classname, old, be);
     }
 }
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.353
diff -u -2 -p -I_WIN32 -INT -r1.353 eval.c
--- eval.c	14 Nov 2002 13:51:18 -0000	1.353
+++ eval.c	18 Nov 2002 04:22:56 -0000
@@ -1693,4 +1693,51 @@ rb_mod_undef_method(mod, name)
 
 void
+rb_deprecate(klass, id, tobe, now)
+    VALUE klass;
+    ID id, tobe;
+    int now;
+{
+    VALUE origin;
+    NODE *orig, **body;
+
+    rb_frozen_class_p(klass);
+    if (klass == rb_cObject) {
+	rb_secure(4);
+    }
+    orig = search_method(klass, id, &origin);
+    if (!orig || !orig->nd_body) {
+	print_undef(klass, id);
+    }
+    body = &orig->nd_body;
+    if (nd_type(*body) == NODE_FBODY) { /* was alias */
+	body = &(*body)->nd_head;
+    }
+    *body = NEW_DEPR(*body, tobe, now);
+}
+
+void
+rb_deprecate_method(klass, oldname, newname, now)
+    VALUE klass;
+    const char *oldname, *newname;
+    int now;
+{
+    rb_deprecate(klass, oldname ? rb_intern(oldname) : 0,
+		 newname ? rb_intern(newname) : 0, now);
+}
+
+static VALUE
+rb_mod_deprecate_method(argc, argv, mod)
+    int argc;
+    VALUE *argv;
+    VALUE mod;
+{
+    VALUE oldname, newname, now;
+
+    rb_scan_args(argc, argv, "12", &oldname, &newname, &now);
+    rb_deprecate(mod, rb_to_id(oldname), NIL_P(newname) ? 0 : rb_to_id(newname), RTEST(now));
+    return mod;
+}
+
+void
 rb_alias(klass, name, def)
     VALUE klass;
@@ -1748,4 +1795,29 @@ rb_mod_alias_method(mod, newname, oldnam
 }
 
+void
+rb_deprecated_alias(klass, name, def, now)
+    VALUE klass;
+    ID name, def;
+    int now;
+{
+    rb_alias(klass, name, def);
+    rb_deprecate(klass, name, def, now);
+}
+
+static VALUE
+rb_mod_deprecated_alias(argc, argv, mod)
+    int argc;
+    VALUE *argv;
+    VALUE mod;
+{
+    VALUE depr, orig, now;
+    ID name, def;
+
+    if (rb_scan_args(argc, argv, "21", &depr, &orig, &now) == 2)
+	now = Qtrue;
+    rb_deprecated_alias(mod, rb_to_id(depr), rb_to_id(orig), RTEST(now));
+    return mod;
+}
+
 static NODE*
 copy_node_scope(node, rval)
@@ -4764,5 +4836,7 @@ rb_call(klass, recv, mid, argc, argv, sc
     ID     id = mid;
     struct cache_entry *ent;
+    int    direct = scope & 4;
 
+    scope &= ~4;
     if (!klass) {
 	rb_raise(rb_eNotImpError, "method `%s' called on terminated object (0x%lx)",
@@ -4804,4 +4878,18 @@ rb_call(klass, recv, mid, argc, argv, sc
     }
 
+    if (nd_type(body) == NODE_DEPR) {
+	rb_deprecated(klass, rb_id2name(mid), rb_id2name(body->nd_mid), body->nd_state);
+	if (body->nd_mid && !direct) {
+	    switch (nd_type(ruby_current_node)) {
+	      case NODE_CALL:
+	      case NODE_FCALL:
+	      case NODE_VCALL:
+		if (ruby_current_node->nd_mid == mid)
+		    ruby_current_node->nd_mid = body->nd_mid;
+	    }
+	}
+	body = body->nd_head;
+    }
+
     return rb_call0(klass, recv, mid, id, argc, argv, body, noex & NOEX_NOSUPER);
 }
@@ -4819,5 +4907,5 @@ rb_apply(recv, mid, args)
     argv = ALLOCA_N(VALUE, argc);
     MEMCPY(argv, RARRAY(args)->ptr, VALUE, argc);
-    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 1);
+    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 5);
 }
 
@@ -4834,5 +4922,5 @@ rb_f_send(argc, argv, recv)
     vid = *argv++; argc--;
     PUSH_ITER(rb_block_given_p()?ITER_PRE:ITER_NOT);
-    vid = rb_call(CLASS_OF(recv), recv, rb_to_id(vid), argc, argv, 1);
+    vid = rb_call(CLASS_OF(recv), recv, rb_to_id(vid), argc, argv, 5);
     POP_ITER();
 
@@ -4877,5 +4965,5 @@ rb_funcall(recv, mid, n, va_alist)
     }
 
-    return rb_call(CLASS_OF(recv), recv, mid, n, argv, 1);
+    return rb_call(CLASS_OF(recv), recv, mid, n, argv, 5);
 }
 
@@ -4887,5 +4975,5 @@ rb_funcall2(recv, mid, argc, argv)
     const VALUE *argv;
 {
-    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 1);
+    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 5);
 }
 
@@ -4897,5 +4985,5 @@ rb_funcall3(recv, mid, argc, argv)
     const VALUE *argv;
 {
-    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 0);
+    return rb_call(CLASS_OF(recv), recv, mid, argc, argv, 4);
 }
 
@@ -4915,5 +5003,5 @@ rb_call_super(argc, argv)
     result = rb_call(RCLASS(ruby_frame->last_class)->super,
 		     ruby_frame->self, ruby_frame->last_func,
-		     argc, argv, 3);
+		     argc, argv, 7);
     POP_ITER();
 
@@ -6204,4 +6292,6 @@ Init_eval()
     rb_define_private_method(rb_cModule, "alias_method", rb_mod_alias_method, 2);
     rb_define_private_method(rb_cModule, "define_method", rb_mod_define_method, -1);
+    rb_define_private_method(rb_cModule, "deprecate_method", rb_mod_deprecate_method, -1);
+    rb_define_private_method(rb_cModule, "deprecated_alias", rb_mod_deprecated_alias, -1);
 
     rb_define_singleton_method(rb_cModule, "nesting", rb_mod_nesting, 0);
Index: gc.c
===================================================================
RCS file: /cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.112
diff -u -2 -p -I_WIN32 -INT -r1.112 gc.c
--- gc.c	29 Oct 2002 21:35:27 -0000	1.112
+++ gc.c	18 Nov 2002 03:14:25 -0000
@@ -1400,5 +1400,5 @@ add_final(os, proc)
     VALUE os, proc;
 {
-    rb_warn("ObjectSpace::add_finalizer is deprecated; use define_finalizer");
+    rb_deprecated(0, 0, 0, 1);
     if (!rb_obj_is_kind_of(proc, rb_cProc)) {
 	rb_raise(rb_eArgError, "wrong type argument %s (Proc required)",
@@ -1413,5 +1413,4 @@ rm_final(os, proc)
     VALUE os, proc;
 {
-    rb_warn("ObjectSpace::remove_finalizer is deprecated; use undefine_finalizer");
     rb_ary_delete(finalizers, proc);
     return proc;
@@ -1421,5 +1420,4 @@ static VALUE
 finals()
 {
-    rb_warn("ObjectSpace::finalizers is deprecated");
     return finalizers;
 }
@@ -1429,5 +1427,4 @@ call_final(os, obj)
     VALUE os, obj;
 {
-    rb_warn("ObjectSpace::call_finalizer is deprecated; use define_finalizer");
     need_call_final = 1;
     FL_SET(obj, FL_FINALIZE);
@@ -1595,4 +1592,14 @@ Init_GC()
     rb_define_module_function(rb_mObSpace, "finalizers", finals, 0);
     rb_define_module_function(rb_mObSpace, "call_finalizer", call_final, 1);
+    {
+	VALUE klass = rb_mObSpace;
+	for (;;) {
+	    rb_deprecate_method(klass, "remove_finalizer", "undefine_finalizer", 1);
+	    rb_deprecate_method(klass, "finalizers", 0, 1);
+	    rb_deprecate_method(klass, "call_finalizer", "define_finalizer", 1);
+	    if (FL_TEST(klass, FL_SINGLETON)) break;
+	    klass = rb_singleton_class(klass);
+	}
+    }
 
     rb_define_module_function(rb_mObSpace, "define_finalizer", define_final, -1);
Index: hash.c
===================================================================
RCS file: /cvs/ruby/src/ruby/hash.c,v
retrieving revision 1.81
diff -u -2 -p -I_WIN32 -INT -r1.81 hash.c
--- hash.c	17 Oct 2002 16:13:44 -0000	1.81
+++ hash.c	18 Nov 2002 03:09:12 -0000
@@ -391,6 +391,4 @@ rb_hash_indexes(argc, argv, hash)
     int i;
 
-    rb_warn("Hash#%s is deprecated; use Hash#select",
-	    rb_id2name(rb_frame_last_func()));
     indexes = rb_ary_new2(argc);
     for (i=0; i<argc; i++) {
@@ -1541,6 +1539,4 @@ env_indexes(argc, argv)
     VALUE indexes = rb_ary_new2(argc);
 
-    rb_warn("ENV.%s is deprecated; use ENV.select",
-	    rb_id2name(rb_frame_last_func()));
     for (i=0;i<argc;i++) {
 	char *v = 0;
@@ -1619,4 +1615,6 @@ Init_Hash()
     rb_define_method(rb_cHash,"indexes", rb_hash_indexes, -1);
     rb_define_method(rb_cHash,"indices", rb_hash_indexes, -1);
+    rb_deprecate_method(rb_cHash, "indexes", "select", 1);
+    rb_deprecate_method(rb_cHash, "indices", "select", 1);
     rb_define_method(rb_cHash,"size", rb_hash_size, 0);
     rb_define_method(rb_cHash,"length", rb_hash_size, 0);
@@ -1687,4 +1685,9 @@ Init_Hash()
     rb_define_singleton_method(envtbl,"value?", env_has_value, 1);
     rb_define_singleton_method(envtbl,"to_hash", env_to_hash, 0);
+    {
+	VALUE klass = rb_singleton_class(envtbl);
+	rb_deprecate_method(klass, "indexes", "select", 1);
+	rb_deprecate_method(klass, "indices", "select", 1);
+    }
 
     rb_define_global_const("ENV", envtbl);
Index: intern.h
===================================================================
RCS file: /cvs/ruby/src/ruby/intern.h,v
retrieving revision 1.100
diff -u -2 -p -I_WIN32 -INT -r1.100 intern.h
--- intern.h	30 Oct 2002 08:04:31 -0000	1.100
+++ intern.h	18 Nov 2002 04:25:23 -0000
@@ -133,4 +133,5 @@ NORETURN(void rb_load_fail _((char*)));
 NORETURN(void rb_error_frozen _((char*)));
 void rb_check_frozen _((VALUE));
+void rb_deprecated _((VALUE, const char*, const char*, int));
 /* eval.c */
 EXTERN struct RNode *ruby_current_node;
@@ -144,4 +145,7 @@ void rb_clear_cache _((void));
 void rb_alias _((VALUE, ID, ID));
 void rb_attr _((VALUE,ID,int,int,int));
+void rb_deprecate _((VALUE, ID, ID, int));
+void rb_deprecated_alias _((VALUE, ID, ID, int));
+void rb_deprecate_method _((VALUE, const char*, const char*, int));
 int rb_method_boundp _((VALUE, ID, int));
 VALUE rb_dvar_defined _((ID));
Index: node.h
===================================================================
RCS file: /cvs/ruby/src/ruby/node.h,v
retrieving revision 1.37
diff -u -2 -p -I_WIN32 -INT -r1.37 node.h
--- node.h	7 Nov 2002 19:18:10 -0000	1.37
+++ node.h	18 Nov 2002 02:25:01 -0000
@@ -124,4 +124,5 @@ enum node_type {
     NODE_IFUNC,
     NODE_DSYM,
+    NODE_DEPR,
     NODE_LAST
 };
@@ -235,4 +236,5 @@ typedef struct RNode {
 #define NEW_METHOD(n,x) rb_node_newnode(NODE_METHOD,x,n,0)
 #define NEW_FBODY(n,i,o) rb_node_newnode(NODE_FBODY,n,i,o)
+#define NEW_DEPR(b,i,n) rb_node_newnode(NODE_DEPR,b,i,n)
 #define NEW_DEFN(i,a,d,p) rb_node_newnode(NODE_DEFN,p,i,NEW_RFUNC(a,d))
 #define NEW_DEFS(r,i,a,d) rb_node_newnode(NODE_DEFS,r,i,NEW_RFUNC(a,d))
Index: object.c
===================================================================
RCS file: /cvs/ruby/src/ruby/object.c,v
retrieving revision 1.94
diff -u -2 -p -I_WIN32 -INT -r1.94 object.c
--- object.c	3 Nov 2002 11:04:17 -0000	1.94
+++ object.c	18 Nov 2002 03:00:40 -0000
@@ -75,12 +75,4 @@ rb_obj_id(obj)
 
 VALUE
-rb_obj_id_obsolete(obj)
-    VALUE obj;
-{
-    rb_warning("Object#id will be deprecated; use Object#object_id");
-    return rb_obj_id(obj);
-}
-
-VALUE
 rb_class_real(cl)
     VALUE cl;
@@ -96,5 +88,5 @@ rb_obj_type(obj)
     VALUE obj;
 {
-    rb_warn("Object#type is deprecated; use Object#class");
+    rb_deprecated(rb_cObject, "type", "class", 1);
     return rb_class_real(CLASS_OF(obj));
 }
@@ -1325,9 +1317,11 @@ Init_Object()
 
     rb_define_method(rb_mKernel, "hash", rb_obj_id, 0);
-    rb_define_method(rb_mKernel, "id", rb_obj_id_obsolete, 0);
+    rb_define_method(rb_mKernel, "id", rb_obj_id, 0);
     rb_define_method(rb_mKernel, "__id__", rb_obj_id, 0);
     rb_define_method(rb_mKernel, "object_id", rb_obj_id, 0);
-    rb_define_method(rb_mKernel, "type", rb_obj_type, 0);
+    rb_define_method(rb_mKernel, "type", rb_obj_class, 0);
     rb_define_method(rb_mKernel, "class", rb_obj_class, 0);
+    rb_deprecate_method(rb_mKernel, "id", "object_id", 0);
+    rb_deprecate_method(rb_mKernel, "type", "class", 1);
 
     rb_define_method(rb_mKernel, "clone", rb_obj_clone, 0);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread