Issue #7572 has been updated by shugo (Shugo Maeda).

File defineclass_fix.diff added
Status changed from Open to Assigned
Assignee set to ko1 (Koichi Sasada)

?????°ã?§ã?????

tadf (tadayoshi funaba) wrote:
> ??¯ã?©ã?¹å??義ã?«ã???????¦ã?¹ã?¼ã????¼ã?¯ã?©ã?¹ã?¨ã????¦ã?¯ã?©ã?¹ã?§ã?ªã???????®ã?????å®??????¦ã????¨ã?©ã?¼ã?«ã?ªã????ªã??äº?????????????
> 
> $ ruby -v -e 'class Foo < nil; end'
> ruby 2.0.0dev (2012-12-16 trunk 38415) [i686-linux]

以ä????®ã???????«ã????³ã?³ã????¤ã?«ã????????'class Foo; end'???'class Foo < nil; end'???????????½ä»¤??????
??ªã?£ã?¦ã????¾ã??????????®ã???????§ã?????

$ cat defineclass.rb 
ary = RubyVM::InstructionSequence.compile(<<EOF).disasm
class Foo; end
class Foo < nil; end
EOF
print ary
$ ruby defineclass.rb
== disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
0000 trace            1                                               (   1)
0002 putspecialobject 3
0004 putnil           
0005 defineclass      :Foo, <class:Foo>, 3
0009 pop              
0010 trace            1                                               (   2)
0012 putspecialobject 3
0014 putnil           
0015 defineclass      :Foo, <class:Foo>, 3
0019 leave            
...

define_type??«ã?¹ã?¼ã????¼ã?¯ã?©ã?¹ã?????å®????????????©ã????????表ã???????©ã?°ã??追å????????????????????æ·»ä???????¾ã?????
?????©ã?°ã?®æ¸¡?????¹ã?¨ã???????¸ã????¯ã????³ã????¼ã?§ã???????®ã????¨ã????²ã??æ°???«ã?ªã????¾ã??????????©ã??????????®ã??????????§ã????????? > ???????????????

??¹ã?¼ã????¼ã?¯ã?©ã?¹ã?????å®?????????ªã????£ã????´å?????nil??§ã?ªã??Qundef???putobject???????????©ã???????¨ã??
?????£ã????®ã?§ã????????r12621???è¦???????Qundef???VM??¹ã?¿ã????¯ã?«ç½®?????ªã????¹é????ªã?®ã?§ã?????????
----------------------------------------
Bug #7572: ??¯ã?©ã?¹å??義ã?«ã???????¦ã?¹ã?¼ã????¼ã?¯ã?©ã?¹ã?¨ã????¦ã?¯ã?©ã?¹ã?§ã?ªã???????®ã?????å®??????¦ã????¨ã?©ã?¼ã?«ã?ªã????ªã??äº??????????
https://bugs.ruby-lang.org/issues/7572#change-34800

Author: tadf (tadayoshi funaba)
Status: Assigned
Priority: Low
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-12-16 trunk 38415) [i686-linux]


??¯ã?©ã?¹å??義ã?«ã???????¦ã?¹ã?¼ã????¼ã?¯ã?©ã?¹ã?¨ã????¦ã?¯ã?©ã?¹ã?§ã?ªã???????®ã?????å®??????¦ã????¨ã?©ã?¼ã?«ã?ªã????ªã??äº?????????????

$ ruby -v -e 'class Foo < nil; end'
ruby 2.0.0dev (2012-12-16 trunk 38415) [i686-linux]

$ ruby -v -e 'class Foo < false; end'
ruby 2.0.0dev (2012-12-16 trunk 38415) [i686-linux]

$ ruby -v -e 'class Foo < true; end'
ruby 2.0.0dev (2012-12-16 trunk 38415) [i686-linux]
-e:1:in `<main>': wrong argument type true (expected Class) (TypeError)



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