yarv-dev:867
From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 14 Feb 2006 06:25:52 +0900
Subject: [yarv-dev:867] Re: open> defining constants in BEGIN causes an error
ささだです。 sheepman wrote: > BEGIN の中で定数を定義するとエラーになります。 BEGIN{} の構造を変えて、BEGIN{} ではスコープを切らない、という制限を設 けさせていただいて対応しました。 多分、理由があってスコープを切っているんだろうと思うんですが、実装が とっても大変なので許してください。というわけで、 BEGIN{a = 1} p defined?(a) #=> "local-variable" となります。これは許せない変更ですかね? > $ cat t.rb > BEGIN{ > A = 1 > p A > } > > $ ./miniruby -v t.rb > ruby 1.9.0 (2005-11-18) [i686-linux] > YARVCore 0.3.3 (rev: 369) [opts: ] > DBG> : ":0:in `initialize'" > -- stack frame ------------ > 0x402b1008 (0000): 00000001 > 0x402b100c (0001): 00000001 <- lfp <- dfp > -- control frame ---------- > c:0003 p:-001 s:0002 b:0002 l:0001 d:0001 CFUNC i:initialize s: - > c:0002 p:-001 s:0001 b:0001 l:0000 d:0000 CFUNC i:initialize s: - > c:0001 p:-001 s:0000 b:-001 l:0000 d:0000 ------ i:- s: - > --------------------------- > [BUG] must be class or block > ruby 1.9.0 (2005-11-18) [i686-linux] > > zsh: abort (core dumped) ./miniruby -v t.rb > > 以下はバックトレースです。 ところで、[BUG] でも、SEGV じゃないのでこういう場合 gdb のバックトレー スは不要です。stack frame もほとんど役に立たないんだよな。少し出力整理し ようかなぁ。 -- // SASADA Koichi at atdot dot net -- ML: yarv-dev quickml.atdot.net 使い方: http://www.atdot.net/~ko1/quickml
817 2006-02-07 23:47 [sheepman sheepman.sa] open> defining constants in BEGIN causes an error -> 867 2006-02-14 06:25 ┗[ko1 atdot.net ] 868 2006-02-14 06:26 ┣[ko1 atdot.net ] fixed> Re: open> defining constants in BEGIN causes an error 871 2006-02-14 09:15 ┣[matz ruby-lang.org ] 886 2006-02-14 19:08 ┗[sheepman sheepman.sa] close> defining constants in BEGIN causes an error