[前][次][番号順一覧][スレッド一覧][生データ]

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