yarv-dev:814
From: Minero Aoki <aamine loveruby.net>
Date: Tue, 07 Feb 2006 00:22:00 +0900 (JST)
Subject: [yarv-dev:814] open> def in def makes method private
青木です。
以下のようにメソッド中でメソッドを定義すると private になってしまいます。
~/c/yarv % cat t
class A
def m
def a
puts "OK"
end
end
end
a = A.new
a.m
a.a
~/c/yarv % ruby -v t
ruby 1.9.0 (2006-02-01) [x86_64-linux]
OK
~/c/yarv % ./ruby -v t
ruby 1.9.0 (2005-11-18) [x86_64-linux]
YARVCore 0.3.3 (rev: 367) [opts: ]
t:11:in `method_missing': private method `a' called for #<A:0x00002a95eaeff0> (NoMethodError)
from t:11:in `<main>'
以前 ruby 1.x で似たようなバグがあったんですが、そのときはトップレベルが
private スコープなのがそのまま出てしまったのが原因でした。insns.def を
見る限り、今回もそういうことなのではないかと思います。メソッド中の def は
すべて public にしてしまったらどうでしょうか。
--
青木峰郎
--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml
-> 814 2006-02-07 00:22 [aamine loveruby.net ] open> def in def makes method private 838 2006-02-11 23:38 ┗[ko1 atdot.net ] fixed> Re: open> def in def makes method private 897 2006-02-15 19:13 ┗[ko1 atdot.net ] 899 2006-02-15 19:34 ┣[aamine loveruby.net ] open> private alias make original method private 900 2006-02-15 19:39 ┃┣[aamine loveruby.net ] Re: private alias make original method private 901 2006-02-15 19:47 ┃┃┗[aamine loveruby.net ] 902 2006-02-15 20:01 ┃┗[ko1 atdot.net ] fixed> Re: open> private alias make original method private 904 2006-02-15 22:57 ┗[matz ruby-lang.org ]