# Is 'Class.new(Class)' valid?

**URL:** <https://www.ruby-forum.com/t/is-class-new-class-valid/132690>\
**Category:** Development\
**Created:** [March 23, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/is-class-new-class-valid/132690 "2008-03-23T15:48:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![rucila](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/35a633/32.png) [@rucila](https://www.ruby-forum.com/u/rucila)\
**Post date:** [March 23, 2008, 3:48pm UTC](https://www.ruby-forum.com/t/is-class-new-class-valid/132690/1 "2008-03-23T15:48:57Z")

</div>

nagachika e$B$H?=$7$^$9!#e(B

RHGe$B$N5U=1$K8~$1$Fe(B class.c e$B$rFI$s$G$$$F5$$,$D$$$?$N$G$9$,e(B  
e$B!"e(B  
class … end e$B9=J8$G%/%i%9$rDj5A$9$k\>l9g$Oe(B superclass e$B$Ke(B  
Class e$B$r;XDj$9$k$HNc30$,H/@8$7$^$9$,!"e(BClass.new e$B%a%=%C%Ie(B  
e$B$Ge(B  
e$B%/%i%9$r@8@.$9$k;~$K$Oe(B superclass(Class.new e$B$N0z?te(B)e$B$Ke(B  
Class e$B$rEO$7$F$bNc30$K$J$j$^$;$s!#e(B  
e$B$3$l$O0U?^E\*$J$b$N$G$7$g$&$+e(B?

e$B$3$N$h$&$K$7$F$G$-$?!Ve(BClasse$B$N%5%V%/%i%9!W$d$=$l$re(B  
e$B7Q\>5$7$?%/%i%9$O%$%s%9%?%s%9$,@8@.$G$-$J$$$N$Ge(B  
e$BIaDL$N%/%i%9$H$7$F$O;H$($J$$$H;W$&$N$G$9$,!“e(B  
e$B2?$+FCJL$JMQES$,$”$k$s$G$7$g$&$+e(B?

e$B\<B9T7k2Le(B  
irb-trunk --simple-prompt

> > class Hoge \< Class  
> > end  
> > TypeError: can’t make subclass of Class  
> > from (irb):1  
> > from irb-trunk:12:in `’
> 
> > Hoge = Class.new(Class)  
> > =\> Hoge
> 
> > Hoge.superclass  
> > =\> Class
> 
> > Hoge.new  
> > TypeError: wrong instance allocation  
> > from (irb):5:in `new' from (irb):5 from irb-trunk:12:in`’

e$B0U?^E\*$G$J$$$J$i$3$s$J46$8$K$9$l$P$$$$$N$G$O$J$$$+$H!#e(B

# Index: class.c

— class.c (e$B%j%S%8%g%se(B 15828)  
+++ class.c (e$B:n6H%3%T!\<e(B)  
@@ -53,6 +53,9 @@  
if (RBASIC(super)-\>flags & FL\_SINGLETON) {  
rb\_raise(rb\_eTypeError, “can’t make subclass of  
singleton class”);  
}

- if (super == rb\_cClass) {
- 

```
  rb_raise(rb_eTypeError, "can't make subclass of

```

Class");

- }  
}

VALUE  
@@ -60,9 +63,6 @@  
{  
Check\_Type(super, T\_CLASS);  
rb\_check\_inheritable(super);

- if (super == rb\_cClass) {
- 

```
  rb_raise(rb_eTypeError, "can't make subclass of

```

Class");

- }  
return rb\_class\_boot(super);  
}
