ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval"
@ 2011-11-30  2:32 Shyouhei Urabe
  2011-11-30  4:14 ` [ruby-dev:44907] [ruby-trunk - Bug #5689] " Shugo Maeda
  2012-03-11  7:56 ` [ruby-dev:45332] [ruby-trunk - Bug #5689][Rejected] " Koichi Sasada
  0 siblings, 2 replies; 5+ messages in thread
From: Shyouhei Urabe @ 2011-11-30  2:32 UTC (permalink / raw
  To: ruby developers list


Issue #5689 has been reported by Shyouhei Urabe.

----------------------------------------
Bug #5689: class variables inside of instance methods inside of "class_eval"
http://redmine.ruby-lang.org/issues/5689

Author: Shyouhei Urabe
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2011-11-30 trunk 33904) [x86_64-linux]


インスタンスメソッドの中から他のクラスのクラス変数が見えるというのはいかにもまずそうに思うのですが、以下の挙動は意図的ですか。

zsh % ~/target/trunk/bin/ruby -ve'
class Klass
  @@cvar = "Klass"
end

Klass.module_eval do
  def cvar
    @@cvar
  end
end

@@cvar = "main"
puts Klass.new.cvar'

ruby 2.0.0dev (2011-11-30 trunk 33904) [x86_64-linux]
-e:12: warning: class variable access from toplevel
-e:8: warning: class variable access from toplevel
main



-- 
http://redmine.ruby-lang.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ruby-dev:44907] [ruby-trunk - Bug #5689] class variables inside of instance methods inside of "class_eval"
  2011-11-30  2:32 [ruby-dev:44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval" Shyouhei Urabe
@ 2011-11-30  4:14 ` Shugo Maeda
  2011-11-30  6:01   ` [ruby-dev:44908] " Yukihiro Matsumoto
  2012-03-11  7:56 ` [ruby-dev:45332] [ruby-trunk - Bug #5689][Rejected] " Koichi Sasada
  1 sibling, 1 reply; 5+ messages in thread
From: Shugo Maeda @ 2011-11-30  4:14 UTC (permalink / raw
  To: ruby developers list


Issue #5689 has been updated by Shugo Maeda.


Shyouhei Urabe wrote:
> インスタンスメソッドの中から他のクラスのクラス変数が見えるというのはいかにもまずそうに思うのですが、以下の挙動は意図的ですか。
> 
> zsh % ~/target/trunk/bin/ruby -ve'
> class Klass
>   @@cvar = "Klass"
> end
> 
> Klass.module_eval do
>   def cvar
>     @@cvar
>   end
> end
> 
> @@cvar = "main"
> puts Klass.new.cvar'

module_evalは定数同様にクラス変数の探索にも影響しないので、意図的では
あるんじゃないでしょうか。
定数探索の動作を1.8と同じに戻した時の議論で、クラス変数をどうするかも
議論した上で、合わせて1.8の動作に戻したように記憶しています。

ただ、今の動作が望ましいかどうかは議論の余地があると思います。

----------------------------------------
Bug #5689: class variables inside of instance methods inside of "class_eval"
http://redmine.ruby-lang.org/issues/5689

Author: Shyouhei Urabe
Status: Open
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2011-11-30 trunk 33904) [x86_64-linux]


インスタンスメソッドの中から他のクラスのクラス変数が見えるというのはいかにもまずそうに思うのですが、以下の挙動は意図的ですか。

zsh % ~/target/trunk/bin/ruby -ve'
class Klass
  @@cvar = "Klass"
end

Klass.module_eval do
  def cvar
    @@cvar
  end
end

@@cvar = "main"
puts Klass.new.cvar'

ruby 2.0.0dev (2011-11-30 trunk 33904) [x86_64-linux]
-e:12: warning: class variable access from toplevel
-e:8: warning: class variable access from toplevel
main



-- 
http://redmine.ruby-lang.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ruby-dev:44908] Re: [ruby-trunk - Bug #5689] class variables inside of instance methods inside of "class_eval"
  2011-11-30  4:14 ` [ruby-dev:44907] [ruby-trunk - Bug #5689] " Shugo Maeda
@ 2011-11-30  6:01   ` Yukihiro Matsumoto
  2011-11-30 15:55     ` [ruby-dev:44909] " Shugo Maeda
  0 siblings, 1 reply; 5+ messages in thread
From: Yukihiro Matsumoto @ 2011-11-30  6:01 UTC (permalink / raw
  To: ruby developers list

まつもと ゆきひろです

In message "Re: [ruby-dev:44907] [ruby-trunk - Bug #5689] class variables inside of instance methods inside of "class_eval""
    on Wed, 30 Nov 2011 13:14:05 +0900, Shugo Maeda <redmine@ruby-lang.org> writes:

|module_evalは定数同様にクラス変数の探索にも影響しないので、意図的では
|あるんじゃないでしょうか。
|定数探索の動作を1.8と同じに戻した時の議論で、クラス変数をどうするかも
|議論した上で、合わせて1.8の動作に戻したように記憶しています。

意図的です。ので、これは少なくともバグではありません。

|ただ、今の動作が望ましいかどうかは議論の余地があると思います。

そうですね。「module_evalは定数(やクラス変数)の探索先を変えて
しまったほうが良い」という考えは当然ありえると思いますし、実
際にそう期待している人もそれなりにいるようです。

そのように帰るべきだと考える場合にはfeature proposalとして提
案してください。

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ruby-dev:44909] Re: [ruby-trunk - Bug #5689] class variables inside of instance methods inside of "class_eval"
  2011-11-30  6:01   ` [ruby-dev:44908] " Yukihiro Matsumoto
@ 2011-11-30 15:55     ` Shugo Maeda
  0 siblings, 0 replies; 5+ messages in thread
From: Shugo Maeda @ 2011-11-30 15:55 UTC (permalink / raw
  To: ruby developers list

前田です。

2011年11月30日15:01 Yukihiro Matsumoto <matz@ruby-lang.org>:
> |ただ、今の動作が望ましいかどうかは議論の余地があると思います。
>
> そうですね。「module_evalは定数(やクラス変数)の探索先を変えて
> しまったほうが良い」という考えは当然ありえると思いますし、実
> 際にそう期待している人もそれなりにいるようです。
>
> そのように帰るべきだと考える場合にはfeature proposalとして提
> 案してください。

たぶんwycatsが反対すると思うので、feature proposalはruby-coreに
出してもらった方がよいと思います。

個人的には、定数は現在のままで、クラス変数はmodule_evalなどの
影響を受ける、という線はアリかなという気がします。
クラス変数に静的スコープっぽい挙動を求める人はあまりいないと
思いますので。

-- 
Shugo Maeda

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [ruby-dev:45332] [ruby-trunk - Bug #5689][Rejected] class variables inside of instance methods inside of "class_eval"
  2011-11-30  2:32 [ruby-dev:44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval" Shyouhei Urabe
  2011-11-30  4:14 ` [ruby-dev:44907] [ruby-trunk - Bug #5689] " Shugo Maeda
@ 2012-03-11  7:56 ` Koichi Sasada
  1 sibling, 0 replies; 5+ messages in thread
From: Koichi Sasada @ 2012-03-11  7:56 UTC (permalink / raw
  To: ruby developers list


Issue #5689 has been updated by Koichi Sasada.

Status changed from Open to Rejected


----------------------------------------
Bug #5689: class variables inside of instance methods inside of "class_eval"
https://bugs.ruby-lang.org/issues/5689

Author: Shyouhei Urabe
Status: Rejected
Priority: Normal
Assignee: 
Category: core
Target version: 2.0.0
ruby -v: -


インスタンスメソッドの中から他のクラスのクラス変数が見えるというのはいかにもまずそうに思うのですが、以下の挙動は意図的ですか。

zsh % ~/target/trunk/bin/ruby -ve'
class Klass
  @@cvar = "Klass"
end

Klass.module_eval do
  def cvar
    @@cvar
  end
end

@@cvar = "main"
puts Klass.new.cvar'

ruby 2.0.0dev (2011-11-30 trunk 33904) [x86_64-linux]
-e:12: warning: class variable access from toplevel
-e:8: warning: class variable access from toplevel
main



-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-03-11  8:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-30  2:32 [ruby-dev:44906] [ruby-trunk - Bug #5689][Open] class variables inside of instance methods inside of "class_eval" Shyouhei Urabe
2011-11-30  4:14 ` [ruby-dev:44907] [ruby-trunk - Bug #5689] " Shugo Maeda
2011-11-30  6:01   ` [ruby-dev:44908] " Yukihiro Matsumoto
2011-11-30 15:55     ` [ruby-dev:44909] " Shugo Maeda
2012-03-11  7:56 ` [ruby-dev:45332] [ruby-trunk - Bug #5689][Rejected] " Koichi Sasada

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).