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

yarv-dev:788

From: 雪見酒 <yukimi_sake mbi.nifty.com>
Date: Sun, 29 Jan 2006 17:31:36 +0900
Subject: [yarv-dev:788] open> probrem of module's scope

こんにちは。
同一名のクラスをネストさせるとおかしくなります。

#scopetest1.rb
module M
  class A
    def hoge
      p "hoge"
    end
  end
end

class A
  include M
  def initialize
    A.new.hoge
#   instance_eval("A.new.hoge")
  end
end

A.new

これはRubyでは"hoge"を返しますが、YARVでは

scopetest1:12:in `new': stack level too deep (SystemStackError
        from scopetest1:12:in `initialize'
        from scopetest1:12:in `new'
        from scopetest1:12:in `initialize'
        from scopetest1:12:in `new'
        from scopetest1:12:in `initialize'
        from scopetest1:12:in `new'
        from scopetest1:12:in `initialize'
        from scopetest1:12:in `new'
         ... 7461 levels...
        from scopetest1:12:in `new'
        from scopetest1:12:in `initialize'
        from scopetest1:17:in `new'
        from scopetest1:17:in `<main>'

になります。クラス内で直接ネストさせれば問題ありません。
日記ではinstance_evalすると無限ループすると書きましたが、そうではなくど
ちらもスタックエラーでした。
--
雪見酒



-- 
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

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

->     788 2006-01-29 17:31 [yukimi_sake mbi.nift] open> probrem of module's scope         
       792 2006-02-01 03:30 ┗[ko1 atdot.net       ]                                       
       853 2006-02-13 20:39  ┗[ko1 atdot.net       ] fixed>Re: open> probrem of module's scope