[#22503] can't require — IWATSUKI Hiroyuki <don@...>

岩月と申します。

94 messages 2004/01/06
[#22504] Re: can't require — nobu.nakada@... 2004/01/06

なかだです。

[#22505] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/06

まつもと ゆきひろです

[#22506] Re: can't require — IWATSUKI Hiroyuki <don@...> 2004/01/06

岩月と申します。

[#22509] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22513] Re: can't require — IWATSUKI Hiroyuki <don@...> 2004/01/07

岩月と申します。

[#22514] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22522] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22524] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22526] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。

[#22534] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22535] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/07

まつもと ゆきひろです

[#22536] Re: can't require — Tanaka Akira <akr@...17n.org> 2004/01/07

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

[#22540] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22541] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/07

山本です。なかださんのコードで気になった点が3つあります。

[#22546] Re: can't require — nobu.nakada@... 2004/01/07

なかだです。

[#22549] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/08

山本です。

[#22550] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/08

山本です。

[#22551] Re: can't require — nobu.nakada@... 2004/01/08

なかだです。

[#22571] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/11

山本です。

[#22667] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/22

山本です。

[#22668] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/22

まつもと ゆきひろです

[#22669] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/22

山本です。

[#22676] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/24

山本です。

[#22677] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22678] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22679] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22680] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22682] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/25

山本です。

[#22683] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/25

まつもと ゆきひろです

[#22686] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/26

山本です。

[#22687] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/26

山本です。

[#22697] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22700] Re: can't require — nobu.nakada@... 2004/01/27

なかだです。

[#22712] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。WinCVS + byacc + sed をインストールして、ビルドできるようになりました。

[#22714] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22716] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/27

山本です。

[#22725] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22729] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22734] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22736] Re: can't require — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22738] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22739] Re: can't require — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22740] Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/28

なかだです。

[#22741] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22744] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22746] Re: Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/28

なかだです。

[#22747] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22748] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/28

山本です。

[#22750] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/28

まつもと ゆきひろです

[#22761] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22764] Re: Dir.glob (Re: Re: can't require) — nobu.nakada@... 2004/01/29

なかだです。

[#22766] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22770] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22772] Re: Dir.glob (Re: Re: can't require) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/01/29

山本です。

[#22774] Re: Dir.glob (Re: Re: can't require) — matz@... (Yukihiro Matsumoto) 2004/01/29

まつもと ゆきひろです

[#22688] output directory for extensions — nobu.nakada@...

なかだです。

14 messages 2004/01/26

[#22691] 次期リリースでの新規添付ライブラリ — "Kawaji, Shinya" <kawaji@...>

かわじ、です

18 messages 2004/01/26
[#22693] Re: 次期リリースでの新規添付ライブラリ — matz@... (Yukihiro Matsumoto) 2004/01/26

まつもと ゆきひろです

[#22694] Re: 次期リリースでの新規添付ライブラリ — matz@... (Yukihiro Matsumoto) 2004/01/26

まつもと ゆきひろです

[#22763] $: trick in test/* — "NAKAMURA, Hiroshi" <nakahiro@...>

なひです。

21 messages 2004/01/29

[ruby-dev:22606] Re: marshaling a nameerror.

From: nobu.nakada@...
Date: 2004-01-17 10:36:22 UTC
List: ruby-dev #22606
なかだです。

At Sat, 17 Jan 2004 18:14:56 +0900,
Nobuyoshi-Nakada wrote:
> 既存のデータと互換性がなくていいなら、marshal_dumpですかねぇ。

遅延評価させるのをNameError#mesgだけにするという手もあるかも。
余計な名前が入っちゃうところがちょっとイヤですが。


Index: error.c
===================================================================
RCS file: /cvs/ruby/src/ruby/error.c,v
retrieving revision 1.87
diff -u -2 -p -d -r1.87 error.c
--- error.c	30 Dec 2003 16:36:05 -0000	1.87
+++ error.c	17 Jan 2004 10:29:05 -0000
@@ -294,4 +294,5 @@ VALUE rb_eSecurityError;
 VALUE rb_eNotImpError;
 VALUE rb_eNoMemError;
+static VALUE rb_cNameErrorMesg;
 
 VALUE rb_eScriptError;
@@ -630,4 +631,26 @@ name_err_name(self)
 /*
  * call-seq:
+ *  name_error.to_s   => string
+ *
+ * Produce a nicely-formated string representing the +NameError+.
+ */
+
+static VALUE
+name_err_to_s(exc)
+    VALUE exc;
+{
+    VALUE mesg = rb_attr_get(exc, rb_intern("mesg")), str = mesg;
+
+    if (NIL_P(mesg)) return rb_class_path(CLASS_OF(exc));
+    StringValue(str);
+    if (str != mesg) {
+	rb_iv_set(exc, "mesg", mesg = str);
+    }
+    if (OBJ_TAINTED(exc)) OBJ_TAINT(mesg);
+    return mesg;
+}
+
+/*
+ * call-seq:
  *   NoMethodError.new(msg, name [, args])  => no_method_error
  *
@@ -650,4 +673,75 @@ nometh_err_initialize(argc, argv, self)
 }
 
+static void
+name_err_mesg_mark(ptr)
+    VALUE *ptr;
+{
+    rb_gc_mark(ptr[0]);
+    rb_gc_mark(ptr[1]);
+}
+
+static VALUE
+name_err_mesg_init(obj, mesg, recv)
+    VALUE obj, mesg, recv;
+{
+    VALUE *ptr = ALLOC_N(VALUE, 2);
+
+    ptr[0] = mesg;
+    ptr[1] = recv;
+    return Data_Wrap_Struct(rb_cNameErrorMesg, name_err_mesg_mark, -1, ptr);
+}
+
+static VALUE
+name_err_mesg_to_str(obj)
+    VALUE obj;
+{
+    VALUE *ptr, mesg;
+    Data_Get_Struct(obj, VALUE, ptr);
+
+    mesg = ptr[0];
+    if (NIL_P(mesg)) return Qnil;
+    else {
+	char *desc = 0;
+	VALUE d = 0, args[2];
+
+	obj = ptr[1];
+	switch (TYPE(obj)) {
+	  case T_NIL:
+	    desc = "nil";
+	    break;
+	  case T_TRUE:
+	    desc = "true";
+	    break;
+	  case T_FALSE:
+	    desc = "false";
+	    break;
+	  default:
+	    d = rb_protect(rb_inspect, obj, 0);
+	    if (!NIL_P(d) || RSTRING(d)->len > 65) {
+		d = rb_any_to_s(obj);
+	    }
+	    desc = RSTRING(d)->ptr;
+	    break;
+	}
+	if (desc && desc[0] != '#') {
+	    d = rb_str_new2(desc);
+	    rb_str_cat2(d, ":");
+	    rb_str_cat2(d, rb_obj_classname(obj));
+	}
+	args[0] = mesg;
+	args[1] = d;
+	mesg = rb_f_sprintf(2, args);
+    }
+    if (OBJ_TAINTED(obj)) OBJ_TAINT(mesg);
+    return mesg;
+}
+
+static VALUE
+name_err_mesg_load(klass, str)
+    VALUE klass, str;
+{
+    return str;
+}
+
 /*
  * call-seq:
@@ -885,4 +979,10 @@ Init_Exception()
     rb_define_method(rb_eNameError, "initialize", name_err_initialize, -1);
     rb_define_method(rb_eNameError, "name", name_err_name, 0);
+    rb_define_method(rb_eNameError, "to_s", name_err_to_s, 0);
+    rb_define_singleton_method(rb_eNameError, "message", name_err_mesg_init, 2);
+    rb_cNameErrorMesg = rb_define_class_under(rb_eNameError, "Message", rb_cData);
+    rb_define_method(rb_cNameErrorMesg, "to_str", name_err_mesg_to_str, 0);
+    rb_define_method(rb_cNameErrorMesg, "_dump", name_err_mesg_to_str, 1);
+    rb_define_singleton_method(rb_cNameErrorMesg, "_load", name_err_mesg_load, 1);
     rb_eNoMethodError = rb_define_class("NoMethodError", rb_eNameError);
     rb_define_method(rb_eNoMethodError, "initialize", nometh_err_initialize, -1);
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.629
diff -u -2 -p -d -r1.629 eval.c
--- eval.c	16 Jan 2004 14:53:10 -0000	1.629
+++ eval.c	17 Jan 2004 10:08:19 -0000
@@ -5161,63 +5161,4 @@ static int last_call_status;
 
 /*
- * call-seq:
- *  name_error.to_s   => string
- *
- * Produce a nicely-formated string representing the +NameError+.
- */
-
-static VALUE
-name_err_to_s(exc)
-    VALUE exc;
-{
-    VALUE mesg = rb_attr_get(exc, rb_intern("mesg"));
-    ID id_recv = rb_intern("recv");
-
-    if (NIL_P(mesg)) return rb_class_path(CLASS_OF(exc));
-    if (rb_ivar_defined(exc, id_recv)) {
-	char buf[BUFSIZ];
-	char *desc = "";
-	volatile VALUE d = 0;
-	int noclass;
-	VALUE obj = rb_ivar_get(exc, id_recv);
-	int state;
-
-	switch (TYPE(obj)) {
-	  case T_NIL:
-	    desc = "nil";
-	    break;
-	  case T_TRUE:
-	    desc = "true";
-	    break;
-	  case T_FALSE:
-	    desc = "false";
-	    break;
-	  default:
-	    PUSH_TAG(PROT_NONE);
-	    if ((state = EXEC_TAG()) == 0) {
-		d = rb_inspect(obj);
-	    }
-	    POP_TAG();
-	    if (!d || RSTRING(d)->len > 65) {
-		d = rb_any_to_s(obj);
-	    }
-	    break;
-	}
-	if (d) {
-	    desc = RSTRING(d)->ptr;
-	}
-	noclass = (!desc || desc[0]=='#');
-	snprintf(buf, BUFSIZ, RSTRING(mesg)->ptr, desc,
-		 noclass ? "" : ":",
-		 noclass ? "" : rb_obj_classname(obj));
-	mesg = rb_str_new2(buf);
-	rb_iv_set(exc, "mesg", mesg);
-	st_delete(ROBJECT(exc)->iv_tbl, (st_data_t*)&id_recv, 0);
-    }
-    if (OBJ_TAINTED(exc)) OBJ_TAINT(mesg);
-    return mesg;
-}
-
-/*
  *  call-seq:
  *     obj.method_missing(symbol [, *args] )   => result
@@ -5269,11 +5210,11 @@ rb_method_missing(argc, argv, obj)
 
     if (last_call_status & CSTAT_PRIV) {
-	format = "private method `%s' called for %%s%%s%%s";
+	format = "private method `%s' called for %%s";
     }
     else if (last_call_status & CSTAT_PROT) {
-	format = "protected method `%s' called for %%s%%s%%s";
+	format = "protected method `%s' called for %%s";
     }
     else if (last_call_status & CSTAT_VCALL) {
-	format = "undefined local variable or method `%s' for %%s%%s%%s";
+	format = "undefined local variable or method `%s' for %%s";
 	exc = rb_eNameError;
     }
@@ -5282,5 +5223,5 @@ rb_method_missing(argc, argv, obj)
     }
     if (!format) {
-	format = "undefined method `%s' for %%s%%s%%s";
+	format = "undefined method `%s' for %%s";
     }
 
@@ -5292,5 +5233,5 @@ rb_method_missing(argc, argv, obj)
 
 	snprintf(buf, BUFSIZ, format, rb_id2name(id));
-	args[n++] = rb_str_new2(buf);
+	args[n++] = rb_funcall(exc, rb_intern("message"), 2, rb_str_new2(buf), obj);
 	args[n++] = argv[0];
 	if (exc == rb_eNoMethodError) {
@@ -5298,5 +5239,4 @@ rb_method_missing(argc, argv, obj)
 	}
 	exc = rb_class_new_instance(n, args, exc);
-	rb_iv_set(exc, "recv", obj);
 	ruby_frame = ruby_frame->prev; /* pop frame for "method_missing" */
 	rb_exc_raise(exc);
@@ -7662,7 +7602,4 @@ Init_load()
     ruby_dln_librefs = rb_ary_new();
     rb_global_variable(&ruby_dln_librefs);
-
-    /* not really a right place */
-    rb_define_method(rb_eNameError, "to_s", name_err_to_s, 0);
 }
 


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

In This Thread