[#29371] commit miss — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
7 messages
2006/09/01
[#29374] nil.to_s — Shugo Maeda <shugo@...>
前田です。
59 messages
2006/09/01
[#29375] Re: nil.to_s
— "U.Nakamura" <usa@...>
2006/09/01
こんにちは、なかむら(う)です。
[#29380] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29387] Re: nil.to_s
— Shugo Maeda <shugo@...>
2006/09/01
前田です。
[#29390] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29398] Re: nil.to_s
— "NARUSE, Yui" <naruse@...>
2006/09/01
成瀬です。
[#29400] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29405] Re: nil.to_s
— "NARUSE, Yui" <naruse@...>
2006/09/02
成瀬です。
[#29520] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/07
まつもと ゆきひろです
[#29396] Re: nil.to_s
— "U.Nakamura" <usa@...>
2006/09/01
こんにちは、なかむら(う)です。
[#29409] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/02
まつもと ゆきひろです
[#29376] Re: nil.to_s
— Shugo Maeda <shugo@...>
2006/09/01
前田です。
[#29406] too slow drb test — Tanaka Akira <akr@...>
とあるホスト (というのは td176.testdrive.hp.com ですが) で
5 messages
2006/09/02
[#29416] build failed on osx — Masatoshi SEKI <m_seki@...>
咳といいます。
8 messages
2006/09/02
[#29426] Re: build failed on osx
— Mitsuhiro Kondo <miche@...>
2006/09/03
近藤と申します。
[#29436] Re: build failed on osx
— Masatoshi SEKI <m_seki@...>
2006/09/03
咳といいます。
[#29423] Time#rfc2822 — Tadayoshi Funaba <tadf@...>
ふなばです。
9 messages
2006/09/03
[#29427] Re: Time#rfc2822
— Tanaka Akira <akr@...>
2006/09/03
In article <20060903.111434.71084310.tadf@dotrb.org>,
[#29429] Re: Time#rfc2822
— Tadayoshi Funaba <tadf@...>
2006/09/03
> Time が utc なら時差情報は出さないのが意図であると推測するの
[#29432] Re: Time#rfc2822
— Tanaka Akira <akr@...>
2006/09/03
In article <20060903.140151.74756121.tadf@dotrb.org>,
[#29447] Struct::Tms.instance_methods(false) contains false — Tanaka Akira <akr@...>
以下のように、instance_methods の結果に false が入ることがあります。
4 messages
2006/09/03
[#29473] ext/tk/tkutil — nobu@...
なかだです。
8 messages
2006/09/04
[#29474] Re: ext/tk/tkutil
— Yukihiro Matsumoto <matz@...>
2006/09/04
まつもと ゆきひろです
[#29491] symbol and string — Tanaka Akira <akr@...>
open-uri で :proxy=>nil という指定を行うと、以下のようにエラーになります。
33 messages
2006/09/05
[#29499] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/05
まつもと ゆきひろです
[#29500] Re: symbol and string
— Tanaka Akira <akr@...>
2006/09/05
In article <1157470154.047826.13379.nullmailer@x31.priv.netlab.jp>,
[#29503] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/06
まつもと ゆきひろです
[#29504] Re: symbol and string
— Tanaka Akira <akr@...>
2006/09/06
In article <1157505538.340126.8472.nullmailer@x31.priv.netlab.jp>,
[#29507] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/06
まつもと ゆきひろです
[#29512] Re: symbol and string
— keiju@... (石塚圭樹)
2006/09/06
けいじゅ@いしつかです.
[#29529] Re: symbol and string
— SASADA Koichi <ko1@...>
2006/09/08
ささだです。
[#29530] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/08
まつもと ゆきひろです
[#29532] Re: symbol and string
— Masatoshi SEKI <m_seki@...>
2006/09/08
咳といいます。
[#29533] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/08
まつもと ゆきひろです
[#29601] cgi.rbのformの挙動 — Fujioka <fuj@...>
藤岡です。
12 messages
2006/09/26
[#29602] Re: cgi.rbのformの挙動
— Yukihiro Matsumoto <matz@...>
2006/09/26
まつもと ゆきひろです
[#29603] Re: cgi.rbのformの挙動
— Fujioka <fuj@...>
2006/09/26
藤岡です。
[#29604] Re: cgi.rbのformの挙動
— "Nobuyoshi Nakada" <nobu@...>
2006/09/26
なかだです。
[ruby-dev:29567] variable after when
From:
Nobuyoshi Nakada <nobu@...>
Date:
2006-09-13 00:23:03 UTC
List:
ruby-dev #29567
なかだです。
以前ちょっと提案した覚えがありますが、rescue同様whenの比較結果
を変数に代入する構文はどうでしょうか。Regexp#===の戻り値も
MatchDataにすることで、$~を使う必要を減らせると思います。
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.945
diff -p -u -2 -r1.945 eval.c
--- eval.c 10 Sep 2006 00:18:18 -0000 1.945
+++ eval.c 12 Sep 2006 23:53:08 -0000
@@ -2686,14 +2686,15 @@ unknown_node(NODE *volatile node)
static int
-when_cond(VALUE v1, VALUE v2)
+when_cond(VALUE v1, VALUE v2, volatile VALUE *result)
{
- if (v1 == Qundef) {
- return RTEST(v2);
+ if (v1 != Qundef) {
+ v2 = rb_funcall2(v2, eqq, 1, &v1);
}
- return RTEST(rb_funcall2(v2, eqq, 1, &v1));
+ *result = v2;
+ return RTEST(v2);
}
static int
-when_check(NODE *tag, VALUE val, VALUE self)
+when_check(NODE *tag, VALUE val, VALUE self, volatile VALUE *result)
{
VALUE elm;
@@ -2704,5 +2705,5 @@ when_check(NODE *tag, VALUE val, VALUE s
while (tag) {
elm = rb_eval(self, tag->nd_head);
- if (when_cond(val, elm)) {
+ if (when_cond(val, elm, result)) {
return Qtrue;
}
@@ -2713,5 +2714,5 @@ when_check(NODE *tag, VALUE val, VALUE s
elm = svalue_to_avalue(rb_eval(self, tag->nd_head));
for (i=0; i<RARRAY_LEN(elm); i++) {
- if (when_cond(val, RARRAY_PTR(elm)[i])) {
+ if (when_cond(val, RARRAY_PTR(elm)[i], result)) {
return Qtrue;
}
@@ -2719,11 +2720,11 @@ when_check(NODE *tag, VALUE val, VALUE s
break;
case NODE_ARGSCAT:
- if (when_check(tag->nd_head, val, self)) return Qtrue;
- return when_check(tag->nd_body, val, self);
+ if (when_check(tag->nd_head, val, self, result)) return Qtrue;
+ return when_check(tag->nd_body, val, self, result);
case NODE_ARGSPUSH:
- if (when_check(tag->nd_head, val, self)) return Qtrue;
- if (when_cond(val, rb_eval(self, tag->nd_body))) return Qtrue;
+ if (when_check(tag->nd_head, val, self, result)) return Qtrue;
+ if (when_cond(val, rb_eval(self, tag->nd_body), result)) return Qtrue;
default:
- if (when_cond(val, rb_eval(self, tag))) return Qtrue;
+ if (when_cond(val, rb_eval(self, tag), result)) return Qtrue;
break;
}
@@ -2874,5 +2875,8 @@ rb_eval(VALUE self, NODE *n)
ruby_frame->this_func,
ruby_frame->this_class);
- if (when_check(node->nd_head, val, self)) {
+ if (when_check(node->nd_head->nd_cond, val, self, &result)) {
+ if (node->nd_head->nd_body) {
+ assign(self, node->nd_head->nd_body, result, Qfalse);
+ }
node = node->nd_body;
goto again;
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.458
diff -p -u -2 -r1.458 parse.y
--- parse.y 6 Sep 2006 04:25:53 -0000 1.458
+++ parse.y 12 Sep 2006 23:44:31 -0000
@@ -3392,12 +3392,12 @@ brace_block : '{'
;
-case_body : keyword_when args then
+case_body : keyword_when args exc_var then
compstmt
cases
{
/*%%%*/
- $$ = NEW_WHEN($2, $4, $5);
+ $$ = NEW_WHEN(NEW_IF($2, $3, 0), $5, $6);
/*%
- $$ = dispatch3(when, $2, $4, escape_Qundef($5));
+ $$ = dispatch4(when, $2, $3, $5, escape_Qundef($6));
%*/
}
Index: re.c
===================================================================
RCS file: /cvs/ruby/src/ruby/re.c,v
retrieving revision 1.154
diff -p -U 2 -r1.154 re.c
--- re.c 31 Aug 2006 10:47:43 -0000 1.154
+++ re.c 12 Sep 2006 23:57:05 -0000
@@ -1658,7 +1658,7 @@ rb_reg_eqq(VALUE re, VALUE str)
start = rb_reg_search(re, str, 0, 0);
if (start < 0) {
- return Qfalse;
+ return Qnil;
}
- return Qtrue;
+ return rb_backref_get();
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦