[#27384] yaml and pp dump core — sheepman <sheepman@...>
こんばんは、sheepman です。
[#27406] Ripper.new("").parse blocks — Tanaka Akira <akr@...17n.org>
先ほど、端末から test-all したときに途中でブロックすることに
なかだです。
まつもと ゆきひろです
咳といいます。
[#27417] selector namespace — Shugo Maeda <shugo@...>
前田です。
なかだです。
前田です。
なかだです。
前田です。
原です。
なかだです。
[#27428] cannot build ruby with byacc (1.8) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
山本です。
なかだです。
山本です。
[#27429] 1.8.4 relrase plan? — "URABE Shyouhei aka. mput" <root@...>
卜部です。 RubyConf にかまけていた間に
なかだです。
[#27449] --without-hoge — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#27458] Matrix class is broken without mathn — akira yamada / やまだあきら <akira@...>
Debianユーザからrequire "mathn"しないときに
まつもと ゆきひろです
酒井といいます。
まつもと ゆきひろです
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
原です。
けいじゅ@いしつかです.
原です。
[#27460] Re: [ruby-cvs:15780] ruby, ruby/lib: * lib/mkmf.rb (create_makefile): do not unnecessary empty directories. — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
なかだです。
[#27470] def Foo::Bar.baz; end — "URABE Shyouhei aka.mput" <root@...>
卜部です。
[#27484] 1.8.4 feature freeze? — "URABE Shyouhei aka. mput" <root@...>
卜部です。
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
卜部です。
[#27492] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
わたなべです。
山本です。
山本です。
こんにちは、なかむら(う)です。
なかだです。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
[#27511] RCR 322: Use log identities to improve BigMath::log performance — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
小林です。
まつもと ゆきひろです
小林です。
まつもと ゆきひろです
[#27513] broken Qtrue in 64bit environment — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#27532] [win32] replaced symbols — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
[#27535] Re: [ruby-list:41402] Re: 全角スペースを区切りとした文字列分解で — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#27551] 1.8.4 検証を(だれが|どのように)行うか — "URABE Shyouhei aka.mput" <root@...>
さて、 1.8.4-Preview1
植田@ネットフォレストと申します。
山本です。
卜部です。
山本です。
なかだです。
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
In message <20051031093107.5B79.USA@garbagecollect.jp>
こんにちは、なかむら(う)です。
卜部です。
[#27580] 1.8.4 open problems? — "URABE Shyouhei aka.mput" <root@...>
卜部です。
[ruby-dev:27424] value of BEGIN block
なかだです。
one linerでは-n/-pオプションは便利なんですが、BEGINで前処理をし
たいとき(たとえば集計のためにHashを初期化しておくとか)、スコー
プが独立しているためにローカル変数を使うわけにはいきません。こ
れがちょっと不便な場合もあるので、BEGINの結果を後から参照できる
ようにしてみました。
結果を参照するところまでBEGINに入るわけではないので a ||= BEGIN
{...} のようにしないと毎回代入してしまうという制限もありますが、
コンテナ系ではこれで充分な場面も多いのではないかと。
Index: eval.c
===================================================================
RCS file: /cvs/ruby/src/ruby/eval.c,v
retrieving revision 1.838
diff -U2 -p -u -r1.838 eval.c
--- eval.c 11 Oct 2005 12:42:32 -0000 1.838
+++ eval.c 13 Oct 2005 12:00:39 -0000
@@ -1338,6 +1338,6 @@ eval_node(VALUE self, NODE *node)
rb_eval(self, node->nd_head);
node = node->nd_body;
+ if (!node) return Qnil;
}
- if (!node) return Qnil;
return rb_eval(self, node);
}
@@ -3946,4 +3946,11 @@ rb_eval(VALUE self, NODE *n)
break;
+ case NODE_PRELUDE:
+ result = rb_eval(self, node->nd_body);
+ node->nd_body = 0;
+ nd_set_type(node, NODE_LIT);
+ node->nd_lit = result;
+ break;
+
default:
unknown_node(node);
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.419
diff -U2 -p -u -r1.419 parse.y
--- parse.y 11 Oct 2005 12:42:32 -0000 1.419
+++ parse.y 13 Oct 2005 11:57:41 -0000
@@ -689,4 +689,5 @@ compstmt : stmts opt_terms
{
/*%%%*/
+ if ($1 && nd_type($1) == NODE_PRELUDE) $1 = 0;
void_stmts($1);
$$ = $1;
@@ -838,28 +839,4 @@ stmt : kALIAS fitem {lex_state = EXPR_F
%*/
}
- | klBEGIN
- {
- /*%%%*/
- if (in_def || in_single) {
- yyerror("BEGIN in method");
- }
- local_push(0);
- /*%
- if (in_def || in_single) {
- yyerror("BEGIN in method");
- }
- %*/
- }
- '{' compstmt '}'
- {
- /*%%%*/
- ruby_eval_tree_begin = block_append(ruby_eval_tree_begin,
- NEW_PREEXE($4));
- local_pop();
- $$ = 0;
- /*%
- $$ = dispatch1(BEGIN, $4);
- %*/
- }
| klEND '{' compstmt '}'
{
@@ -2923,4 +2900,32 @@ primary : literal
%*/
}
+ | klBEGIN
+ {
+ /*%%%*/
+ if (in_def || in_single) {
+ yyerror("BEGIN in method");
+ }
+ local_push(0);
+ /*%
+ if (in_def || in_single) {
+ yyerror("BEGIN in method");
+ }
+ %*/
+ }
+ '{' compstmt '}'
+ {
+ /*%%%*/
+ NODE *pre = 0;
+ if ($4) {
+ pre = NEW_PRELUDE(0, NEW_PREEXE($4));
+ }
+ ruby_eval_tree_begin = block_append(ruby_eval_tree_begin,
+ pre);
+ local_pop();
+ $$ = pre;
+ /*%
+ $$ = dispatch1(BEGIN, $4);
+ %*/
+ }
;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦